2

メインの JSF コンポーネント ライブラリとして PrimeFaces を使用しています。しかし、1 つの Web ページでのみ必要です。他の Web ページは PrimeFaces ライブラリを使用していません。私はテンプレートを使用しています。ここに重要なテンプレートの一部があります:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">  
<h:head>
    <f:facet name="first">
        <title>
            <ui:insert name="titleOfPage">Insert title</ui:insert>
        </title>
    </f:facet>
    <h:outputStylesheet name="basic.css" library="css" />
    <h:outputStylesheet name="template.css" library="css" />
    <f:facet name="last">
        <ui:insert name="scriptOfPage" />
        <h:outputScript name="mainScript.js" library="javascript" />
        <ui:insert name="styleOfPage" />
    </f:facet>
</h:head>   
<h:body>

h:head を定義すると、PrimeFaces の theme.css が自動的に読み込まれることがわかりました。読み込まれたページのソースの一部は次のようになります。

<link href="/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo" rel="stylesheet" type="text/css">

テンプレートまたはページで、テンプレートを実装するプライムフェイスを使用していません。しかし、h:head はまだ theme.cs をロードします。必要なときだけこのテーマをロードすることは可能ですか?

4

2 に答える 2

9

web.xml でテーマを読み込まないようにすることができます。

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>none</param-value>
</context-param>

テーマを設定したいサイトでは、css を追加するだけです。

<link href="/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo" rel="stylesheet" type="text/css"/>
于 2012-09-08T23:07:22.223 に答える
0

おそらくヘッドレンダラーをオーバーライドしますか?それをエンコードする部分を削除してから、1 つのページで手動で行います。

そのようにする方法は他にもたくさん考えられます。具体的なサポートが必要な場合はお知らせください。

このhttp://code.google.com/p/primefaces-extensions/source/browse/primefaces-extensions/trunk/src/main/java/org/primefaces/extensions/component/head/HeadRendererを使用できると思います。 java?r=1353

于 2012-09-08T17:42:54.620 に答える