43 votes

Comment rendre conditionnellement une balise f:selectItem ?

Comment puis-je spécifier un rendu conditionnel pour une balise <f:selectItem> J'ai besoin d'afficher les <f:selectItem> en fonction du statut d'un utilisateur spécifique.

Par exemple, je voulais quelque chose comme :

 <f:selectItem itemLabel="Yes! I need a girlfriend!"
             rendered="false(or some boolean condition)"
             itemValue="o1"/>

6voto

Roger Keays Points 1158

La solution de contournement que j'utilise consiste à définir l'attribut itemDisabled et à utiliser ce CSS :

 select option[disabled] { display: none; }

Mais il doit être corrigé correctement dans JSF.

3voto

djmj Points 2251

<c:if> pour moi ne fonctionne pas non plus si cela dépend de la variable répétée d'un composant ` (lors de la première phase de construction, cela fonctionne mais en utilisant ajax et en mettant à jour la collection du for-each, cela échoue, affichant certains éléments deux fois et d'autres non)

c'est vraiment un gros problème dans JSF. La désactivation n'est pas toujours une option, et de cette façon, beaucoup plus de code est nécessaire dans le bean pour résoudre des problèmes aussi "faciles".

2voto

Gondy Points 83

Vous pouvez l'encapsuler dans du code ui:fragment

 <ui:fragment rendered="false(or some boolean condition)">
  <f:selectItem itemLabel="Yes! I need a girlfriend!" itemValue="o1"/>
</ui:fragment>

Ensuite, l'élément ne sera rendu que lorsque la codition booléenne est vraie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X