1

有 xhtmltempl.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未加载,但是当templ.xhtmlTomcat运行时发生更改并保存时,它加载正常。

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。

4

2 回答 2

2

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

如果您已将样式表放在 中/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。

于 2012-09-23T12:05:16.763 回答
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 错误。

于 2012-09-21T11:36:08.490 回答