1

テンプレートに裏打ちされたファセットコンポーネントを作成したいと思います。

そんな感じ:

<h:panelGroup rendered="#{myBean.isStepActive('step0')}">
  <composition template="wizard-step.jspx">
    <ui:define name="title">Step One</ui:define>
    <ui:define name="text"><p>This describes the step</p></ui:define>
  </composition>
</h:panelGroup>
<h:panelGroup rendered="#{myBean.isStepActive('step1')}">
  <composition template="wizard-step">
    <ui:define name="title">Step Two</ui:define>
(...)

レンダリングが何を返すかに関係なく、wizard-step.jspxのコンテンツがどのページにも配置されるため、機能しないようです(ui:タグは他のすべてのタグよりも先に評価されるようです。

私が望むことを達成する方法はありますか?私の場合、通常のカスタムタグは、xml属性のみをサポートし、子要素をサポートしないため、十分に強力ではありません。

4

1 に答える 1

1

わかりました、解決策を見つけました。それは非常に簡単です。

通常の taglib を使用して、次のように < ui:insert> と < ui:define> を使用します。

<my:wizardStep>
<ui:insert name="title"><h2>The header comes here</h2>/ui:insert>
</<my:wizardStep>

そして、タグ定義では:

<ui:composition>
<ui:insert name="title" />
(...)
于 2012-08-09T07:59:58.910 に答える