2009-07-20 8 views
1

実行時に別のFaceletsコンポーネントを選択する方法が分かりますか?私は実行時にFaceletコンポーネントを解決する

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

感謝を書きたいと思い

<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> 

私はこのようなコードの一部を持っています。

答えて

1

解決策は正常に動作するはずです - src attributeは、リテラルまたはEL式にすることができます。式にマネージドBeanプロパティを使用させたり、functionで解決したりすることができます。そうすれば、nullでないことを保証することができます(空のページがある場合は、空のページへの参照を返すことができます)。 #{r}がnullになると、おそらく404エラーになります。

<ui:include src="#{myfn:resolveNotNull(r, 'pageIfRIsNull')}.xhtml" /> 
0

わかりません。代わりに、ui:insertを含むテンプレートを使用して、ui:defineをプログラムで使用するcase1またはcase2に転送することもできます。

0

他のJSFコンポーネントと一緒にui:includeを選択的に使用することは可能です。例:

<h:panelGroup rendered="#{!menuMBean.passwordResetRequired}"> 
    <ui:include src="homeNormal.xhtml" /> 
</h:panelGroup> 
関連する問題