Comment tester pour les enum l'égalité dans le JSF?
Est-il possible de tester enum l'égalité dans la JSF?
E. g. où stuff
est un enum Stuff
:
<h:outputText value="text" rendered="#{mrBean.stuff == mrsBean.stuff}"/>
Vous devez vous connecter pour publier un commentaire.
C'est en fait plus EL que JSF liés. La construction que vous avez posté est valide, mais vous devez garder à l'esprit que les valeurs de l'enum sont dans EL 2.1 sont évalués comme des
String
valeurs. SiString.valueOf(mrBean.getStuff())
est égal àString.valueOf(mrsBean.getStuff())
, puis votre code d'exemple de rendu. Dans EL 2.2 la même construction de fonctionner, mais ils sont évalués comme étant vrai enums.Noter qu'il exige, en effet, une méthode de lecture pour revenir à la valeur d'enum. Compte tenu du fait que les énumérations sont traités comme des
String
, vous pouvez en essence aussi simplement faire:Dans l'actuelle EL 2.2 version, vous ne peut pas accès aux valeurs enum directement comme ceci:
Cela n'est possible que lorsque vous utilisez OmniFaces
<o:importConstants>
:Stuff stuff
, et dans mon JSF j'essaie#{stuff.FOO}
, et il ne fonctionne pas. Quand tu dit une méthode de lecture le retour des valeurs enum, u peut être un peu plus précis avec les FOO, BAR de l'exemple que vous avez. J'ai fait une autre question, dans le cas où vous voulez avoir un meilleur regard sur ma structure. stackoverflow.com/questions/3916871/...<o:importConstants>
.Si vous avez l'enum
vous pouvez référencer les énumérations dans vos pages jsf comme suit:
Je ne suis pas si sûr au sujet de l'évaluation de la Chaîne, en raison de quelque chose que je suis tombé sur tout le refactoring du code pour utiliser les énumérations: si vous avez une erreur de frappe dans votre Chaîne d'état, c'est à dire:
vous réellement obtenir une erreur d'exécution lorsque vous appuyez sur la page parce que la EL analyseur va essayer de contraindre 'YESSIR" dans un
Status
enum et de l'échec.Vous pouvez définir des méthodes d'essais sur les enum, voir la source suivante.
Enum définition:
JSF code: