包含<ui:composition template =“”> </ui:composition>时,不会加载IE的CSS条件

时间:2012-09-21 10:48:18

标签: css jsf load conditional

拥有xhtml templ.xhtml布局。

将其包含在其他.xhtml中:

<ui:composition template="/template/templ.xhtml">

在templ.xhtml中定义条件,如:

<h:head>
 <h:outputText value="&lt;!--[if lt IE 8]&gt;&lt;h:outputStylesheet library=&quot;css&quot; name=&quot;styleie8.css&quot; /&gt;&lt;![endif]--&gt;" escape="false" />
</h:head>

styleie8.css未加载,但是当Tomcat运行时,当templ.xhtml中的某些内容发生变化并保存时,它已加载好了。

怎么做,当Tomcat启动时,JSF会立即加载条件?

注意:
试图使用以下替代方案:
1。

<!--[if lt IE 8]>
                <h:outputStylesheet name="styleie8.css" library="css"/>
<![endif]-->

2。

<o:conditionalComment if="lte IE 8">
            <link rel="stylesheet" href="styleie8.css" />
</o:conditionalComment>

3。 #{request.contextPath}/resources而非简单路径 结果是一样的 - 我需要重新保存 .xhtml模板才能加载条件css。

2 个答案:

答案 0 :(得分:2)

您的初始代码段错误。您无法在<h:outputStylesheet>中打印<h:outputText escape="false"><h:outputStylesheet>是一个JSF组件,它应该生成HTML,但在<h:outputText escape="false">中,它将按字面打印。如果您在浏览器中打开页面并右键单击查看源,那么您应该自己发现了这一点。这个不对。 webbrowser只能理解应该是<link rel="stylesheet">的HTML。

如果您已将样式表放在/resources/css/styleie8.css中,则以下内容应该有效:

<h:outputText value="&lt;!--[if lte IE 8]&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;#{request.contextPath}/resources/css/styleie8.css&quot; /&gt;&lt;![endif]--&gt;" escape="false" />

至于您尝试过的替代方案,1)无法正常工作,因为它会被转义。 2)应该假设href指向正确的URL。在您发布的示例中,它假定CSS文件与视图位于同一文件夹中。但是,如果它仍然位于/resources/css/styleie8.css,那么您应该使用:

<o:conditionalComment if="lte IE 8">
    <link rel="stylesheet" href="#{request.contextPath}/resources/css/styleie8.css" />
</o:conditionalComment>

3)应该有效,假设您提供了正确的URL。

答案 1 :(得分:1)

以下行只会输出您的字符串:

<h:outputText value="&lt;!--[if lt IE 8]&gt;&lt;h:outputStylesheet library=&quot;css&quot; name=&quot;styleie8.css&quot; /&gt;&lt;![endif]--&gt;" escape="false" />

h:outputStylesheet也只是输出而作为组件处理。像这样h:outputStylesheet 用作组件:

<h:outputText value="&lt;!--[if lt IE 8]&gt;" escape="false" />
<h:outputStylesheet library="css" name="styleie8.css" />
<h:outputText value="&lt;![endif]--&gt;" escape="false" />

我认为你与第二种选择关系密切。由于缺少上下文路径,您可能会遇到404错误。