2010-05-23 6 views
2

Je suis un débutant à la programmation Web, alors s'il vous plaît garder avec moi. J'utilise JSF 1.2 et je veux conditionnellement définir la couleur des articles dans ma liste déroulante. En d'autres termes, j'ai une collection d'éléments qui, avec une clé et une valeur, ont également une propriété booléenne, warning, qui est définie dynamiquement par l'action de l'utilisateur. Je veux que la liste déroulante affiche tous les éléments, mais ceux dont la propriété d'avertissement est définie sur true doivent être affichés en rouge.Définir conditionnellement la couleur de la police d'un élément dans une liste déroulante dans JSF

Je suppose que je dois étendre la classe SelectItem à ajouter dans la propriété boolean. Comment puis-je conditionnellement définir la couleur de la police de ces éléments dont la propriété d'avertissement est définie sur true dans mes pages JSP?

Merci à l'avance

Répondre

1

Malheureusement, l'implémentation standard JSF de l'élément HTML <select>, l'h:selectOneMenu ne fournit pas d'installations pour définir des classes de style sur chaque élément individuel <option>.

Vous pouvez cependant créer un rendu personnalisé qui fait cela et configurer votre webapp pour utiliser ce moteur de rendu à la place. Fondamentalement, vous avez juste besoin d'ajouter un attribut supplémentaire au composant dans lequel vous passez une chaîne séparée avec toutes les classes de style d'option qui doivent être appliquées sur les options à plusieurs reprises. Le moteur de rendu doit alors prendre soin de choisir cet attribut et d'appliquer les classes de style sur les éléments d'option en conséquence.

Vous trouverez des exemples de code et des explications dans this article. Vous pouvez ensuite se retrouver avec quelque chose comme:

<h:form> 
    <h:selectOneMenu value="#{myBean.selectedItem}"> 
     <f:attribute name="optionClasses" value="option1, option2" /> 
     <f:selectItems value="#{myBean.selectItems}" /> 
    </h:selectOneMenu> 
    <h:commandButton value="submit" action="#{myBean.submit}" /> 
</h:form> 

Vous pouvez bien sûr aussi générer et retourner la valeur de la fève:

 <f:attribute name="optionClasses" value="#{myBean.optionClasses}" /> 
Questions connexes