1

ネストされたテンプレートを考えてみましょう:

Base.xhtml:

...

<h:outputText value="#{uiParamter}"/>
<ui:insert name="header"/>

... etc.

レイアウト.xhtml:

<ui:composition template="Base.xhtml">

    ...

    <ui:insert name="content"/>

    ... etc.

</ui:composition>

テンプレート クライアントを次のように定義すると、次のようになります。

<ui:composition template="Layout.xhtml">

    <ui:define name="header"> foo </ui:define>
    <ui:define name="content"> foo2 </ui:define>
    <ui:param name="uiParameter" value="foo3"/>

</ui:composition>

<ui:param>または<ui:define>を再定義Layout.xhtmlしてBase.xhtmlテンプレートに転送する必要がありますか。例えば:

<ui:param name="uiParameter" value="#{uiParameter}">  
<ui:define name="header">
    <ui:insert name="header"/>
</ui:define>

この質問は、「テンプレート パラメーターはカスケード動作しますか?」と言い換えることもできます。

4

1 に答える 1

4

答えはイエスです。JBoss AS 7.0 で次のコードを実行しました。

ネスト1.xhtml:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets">
    
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title><ui:insert name="title">
                Nested
            </ui:insert></title>
    </h:head>
    
    <h:body>
        <ui:insert name="main" />
        <h:outputText value="#{uiParam}"/>
    </h:body>

</html>

ネスト2.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets" template="nest1.xhtml">

    <ui:define name="main">
        <p>Nested templated content.</p>
    </ui:define>
</ui:composition>

ネスト3.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets" template="nest2.xhtml">

    <ui:define name="title">Nested Template</ui:define>
    <ui:param name="uiParam" value="ui param value" />
</ui:composition>

次のようにレンダリングされました。

jboss 出力のスクリーンショット

于 2012-09-12T15:25:58.197 に答える