博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsf开发心得(3)-jsf应用中css运用背景图片显示不了的问题
阅读量:6890 次
发布时间:2019-06-27

本文共 1771 字,大约阅读时间需要 5 分钟。

hot3.png

   在jsf中模板应用,如果引用css还是按照传统的link标签链接的话,如果网页存放的目录不同,还是会产生相对路径问题。

   而在jsf中有两种方式避免了目录不同产生的相对路径出错的情况。

   一、 表达式引用资源:  <link href="#{resource['css:common.css']}" rel="stylesheet" type="text/css" />  

   二、  <h:outputStylesheet library="css" name="common.css"></h:outputStylesheet>

   这两种方式都是将资源文件放在web应用下的resources目录的css子目录下。可以从生产的html源码看出他们都被转成了绝对路径的形式

    <link href="/egoshop-1.0.0/javax.faces.resource/common.css.xhtml?ln=css" rel="stylesheet" type="text/css" />

    不知是jsf故意为之,还是一个bug,在css文件中的背景设置图片引用时,按照css传统的引用法引用不了。

    比如:css文件路径“resources/css/common.css”。某一个图片的路“resources/img/one.gif",现在要在common.css的元素设置背景图片,如果按照标准的图片引用路径是“backgrond:'../img/one.gif'”

但是如果引用css文件是上面两种方法引用的,图片显示不了。

    挺郁闷的吧?jsf既然解决了引用资源相对路径的问题,但是又产生了另一种问题(相对我们平时用css的习惯,也是标准)。。。。

    不过解决的办法不是没有!

    这得需要了解浏览器下载文件的方式。服务器将html文档返回给浏览器,而html文档包含了很多需要再次下载的资源,如图片等。那么浏览器就根据资源的路径去下载。绝对路径是没有什么疑问的,但关键是相对路径。

    如果文档指定了base元数据,以base指定的src为准区套资源的绝对路径。如果没有指定base就根据当前文档的url去套资源的绝对路径。

    好吧,指定base的src属性吧!但是还是对css里的图片路径没产生影响。。。。

    问题没有解决!!!

    那么css文件里的图片路径是以什么为基准的呢?

    比较没有用jsf技术时css引用的形式:

    <link href="/egoshop-1.0.0/resources/css/common.css" rel="stylesheet" type="text/css" />

    而用了jsf技术后css引用的形式

    <link href="/egoshop-1.0.0/javax.faces.resource/common.css.xhtml?ln=css" rel="stylesheet" type="text/css" />

    可以发现,css文件寻找图片资源是以引用css文件 的路径为基准的。也就是“/”

    而现在css里的图片路径“../img/one.gif”,那么他根据<link href="/egoshop-1.0.0/javax.faces.resource/common.css.xhtml?ln=css" rel="stylesheet" type="text/css" />推断图片路径为/egoshop-1.0.0/javax.faces.resource/img/one.gif

那当然没有这个路径的了

   解决的办法是(如果按照标准的jsf应用资源目录):

   background-image: url("../resources/img/one.gif");

    如果不用jsf的图片引用路径为:

    background-image: url("../img/one.gif");

    看多了什么?

    如果以后我们不用jsf技术了,要移植到其他的应用中,这些图片路径还得重新去掉”/resources

    无语吧?

    jsf是给我们带来了方便,可也带来了麻烦和很多不必要的多余的标签和累赘代码,如泥用jsf表单时他生成了很多累赘代码

   

转载于:https://my.oschina.net/u/436274/blog/114245

你可能感兴趣的文章
解密回声消除技术之二(应用篇)
查看>>
Go语言的web程序写法
查看>>
IDF2011:基于SaaS模式的"教学云"案例
查看>>
《Linux From Scratch》第三部分:构建LFS系统 第七章:基本系统配置- 7.5. 配置系统时间...
查看>>
云计算你必须思考的8大问题
查看>>
Windows7 Debug Test
查看>>
HTTPS连接的前几毫秒发生了什么
查看>>
从变量到封装:一文带你为机器学习打下坚实的Python基础
查看>>
给大家共享一个基本算法包
查看>>
Riverbed:SDN向广域网扩展为企业带来哪些价值
查看>>
定义中国网络安全市场战略高度,绿盟科技为“互联网+”保驾护航
查看>>
多维防护:虚拟化安全挑战的破解之道
查看>>
改变数据中心架构的SDN
查看>>
FastDFS分布式文件系统
查看>>
D1net阅闻:SSD固态硬盘将成企业主要存储介质
查看>>
Windows 10 Mobile Build 14383带来数项重要更新
查看>>
LoadRunner 参数化详解
查看>>
智能物流未来有机遇 安防助力发光发热
查看>>
八百客观点:HTML5推动定制化移动CRM的发展
查看>>
厦门自贸片区大数据平台启用
查看>>