2009-07-20 7 views
1

connaissez-vous un moyen de sélectionner un composant de facelets différent lors de l'exécution?Résolution des composants des facelets à l'exécution

J'ai un peu de code similaire à ceci:

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

Je voudrais écrire

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

Merci.

Répondre

1

Votre solution devrait fonctionner correctement - le src attribute peut être une expression littérale ou EL. Vous souhaiterez peut-être faire en sorte que l'expression utilise une propriété bean gérée ou la résoudre via un function. De cette façon, vous pouvez vous assurer que ce n'est jamais nul (vous pourriez renvoyer une référence à une page vide si c'était le cas). Vous obtiendrez probablement une erreur 404 si # {r} résout à null.

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

Incertain. Une alternative serait cependant d'utiliser un template avec un ui: insert puis de le diriger vers case1 ou case2 qui utilise ui: define programatically.

0

Il est possible d'avoir une utilisation sélective de ui: inclure avec d'autres composants JSF. Exemple:

<h:panelGroup rendered="#{!menuMBean.passwordResetRequired}"> 
    <ui:include src="homeNormal.xhtml" /> 
</h:panelGroup> 
Questions connexes