href =“RES_NOT_FOUND”使用h:outputStylesheet

时间:2013-06-02 09:02:04

标签: html css jsf jsf-2 stylesheet

我正在使用JSF 2.0创建多语言基于Web的应用程序。

对于css,我之前使用的是

<h:outputStylesheet library="css" name="setFontForAll.css"/>

和CSS文件里面有

font-size: #{msg['myDir'].contains('LTR')?'10pt':'14pt'};
                                           ^^^     ^^^
                                          English Arabic

然而,由于CSS缓存,同样的CSS文件就在那里,即使我选择阿拉伯语,我也会不断地将字体设为10pt。

因此我在CSS之后增加了时间。

<h:outputStylesheet library="css" name="setFontForAll.css?#{language.myTimeinMill}"/>

然而,当我使用它时,我所有的CSS都会折腾...我看到默认页面设置(没有调用css)

当我看到观看源时,我得到<link type="text/css" rel="stylesheet" href="RES_NOT_FOUND" />

知道我做错了吗?

注意:我使用的是JSF 2.0


我也在身体内打印#{language.myTimeinMill},每次看到不同的时间。

2 个答案:

答案 0 :(得分:2)

我看到的唯一方法是使用普通<link>标记。

使用<h:outputStylesheet />在网址中添加参数是不可能的。关于此主题的一个answer 在JSF 2.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&amp;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&amp;version=#{language.myTimeinMill}" />
</ui:fragment>

答案 1 :(得分:1)

实际上,您需要做的就是在webapp / resources / css / mystyle.css下创建一个文件夹,其中mystyle.css是您的css文件。

然后在你的jsf文件中,只需输入

<h:outputStylesheet name="css/mystyle.css" />

JSF将正确地知道并加载您的css文件,而不会出现RES_NOT_FOUND错误。

PS。这已经使用primefaces jsf 2.2

进行了测试