1

実行時に別の facelets コンポーネントを選択する方法を知っていますか?

私はこれに似たコードをいくつか持っています:

<s:fragment rendered="#{r== 'case1'}">
     <div>
           <ui:include src="case1.xhtml" />
     </div>
 </s:fragment>
 <s:fragment rendered="#{r== 'case2'}">
     <div>
            <ui:include src="case2.xhtml" />
     </div>
 </s:fragment>

書きたい

<ui:include src="#{r}.xhtml" />

ありがとう。

4

3 に答える 3

1

ソリューションは問題なく動作するはずです。src 属性は、リテラルまたは EL 式にすることができます。式でマネージド Bean プロパティを使用するか、関数を介して解決することが必要な場合があります。そうすれば、null にならないようにすることができます (空のページがあった場合は、そのページへの参照を返すことができます)。#{r} が null に解決されると、おそらく 404 エラーが発生します。

<ui:include src="#{myfn:resolveNotNull(r, 'pageIfRIsNull')}.xhtml" />
于 2009-07-20T14:40:48.677 に答える
0

他の JSF コンポーネントで ui:include を選択的に使用することができます。例:

<h:panelGroup rendered="#{!menuMBean.passwordResetRequired}">
    <ui:include src="homeNormal.xhtml" />
</h:panelGroup>
于 2009-07-23T02:34:36.220 に答える
0

わからない。ただし、別の方法として、ui:insert を含むテンプレートを使用し、プログラムで ui:define を使用する case1 または case2 に直接移動することもできます。

于 2009-07-20T14:07:44.607 に答える