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.csstempl.xhtmlロードされていませんが、Tomcat の実行中に何かが変更されて保存された場合、正常にロードされました。

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単純なパスの代わりに。
結果は同じです -条件 css をロードするために .xhtml テンプレートを再保存する必要があります。

4

2 に答える 2

2

最初のコード スニペットが間違っています。<h:outputStylesheet>を に印刷することはできません<h:outputText escape="false">。は<h:outputStylesheet>、HTML を生成することになっている JSF コンポーネントですが、<h:outputText escape="false">文字どおりそのまま印刷されます。ブラウザーでページを開き、右クリックして[ソースを表示] を実行すると、自分でこれを発見したはずです。これは正しくないです。Web ブラウザは、HTML であるべき HTML のみを理解します<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)エスケープされるため機能しません。href2) が正しい 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" />

私はあなたがあなたの2番目の選択肢に近いところだと思います。コンテキストパスが見つからないため、おそらく404エラーが発生しました。

于 2012-09-21T11:36:08.490 に答える