我正在使用JSF2.0创建基于multi-language web的应用程序。
对于前面我使用的css
<h:outputStylesheet library="css" name="setFontForAll.css"/>在CSS文件中
font-size: #{msg['myDir'].contains('LTR')?'10pt':'14pt'};
^^^ ^^^
English Arabic但是,由于CSS缓存,同样的CSS文件在那里,即使我选择阿拉伯语,我也会连续地获得字体为10 if。
因此,我在CSS之后添加了时间。
<h:outputStylesheet library="css" name="setFontForAll.css?#{language.myTimeinMill}"/>但是当我使用这个时,我所有的CSS都会被抛出.我看到默认的页面设置(没有css被调用)
当我看到视图源时,我得到了<link type="text/css" rel="stylesheet" href="RES_NOT_FOUND" />
知道我做错了什么吗?
注意:我使用的是JSF2.0
我也是打印#{language.myTimeinMill}在体内和每次我看到不同的时间。
发布于 2013-06-03 07:58:09
我看到的唯一方法是使用普通的<link>标记。
使用<h:outputStylesheet />在URL中添加参数是不可能的。关于这个主题的一个answer 不再在JSF2.0上工作:
<h:outputStylesheet target="head" name="blank.css">
@import url('css/setFontForAll.css?version=#{language.myTimeinMill}')
</h:outputStylesheet>它返回一条消息:
com.sun.faces.renderkit.html_basic.ScriptStyleBaseRenderer encodeChildren INFO:带有"name“属性和嵌套内容的outputScript。忽略嵌套内容。
尽管如此,我建议这个解决方案:
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/setFontForAll.css?ln=css&version=#{language.myTimeinMill}" />
<ui:fragment rendered="#{msg['myDir'].contains('LTR')}">
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/css/setFontOverride.css?ln=css&version=#{language.myTimeinMill}" />
</ui:fragment>发布于 2014-07-10 16:23:40
实际上,您所需要做的就是在webapp/resources/ css /mystyle.css下创建一个文件夹,其中mystyle.css是您的css文件。
然后在jsf文件中,只需将
<h:outputStylesheet name="css/mystyle.css" />JSF将正确地知道并加载您的css文件,而不会出现RES_NOT_FOUND错误。
PS。这已经用PrimeFacesjsf2.2进行了测试。
https://stackoverflow.com/questions/16881283
复制相似问题