49 votes

Comment tester l'égalité enum dans JSF?

Est-il possible de tester l'égalité enum dans JSF?

Par exemple, où stuff est un enum Stuff :

 <h:outputText value="text" rendered="#{mrBean.stuff == mrsBean.stuff}"/>
 

94voto

BalusC Points 498232

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. Si String.valueOf(mrBean.getStuff()) équivaut String.valueOf(mrsBean.getStuff()), alors 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.

Notez 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 juste à faire:

<h:outputText value="text" rendered="#{mrBean.stuff == 'FOO'}" />

Dans l'actuelle EL 2.2 version, vous ne pouvez pas accéder aux valeurs enum directement comme ceci:

<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />

Cela n'est possible que lorsque vous utilisez OmniFaces <o:importConstants>:

<o:importConstants type="com.example.Stuff" />
...
<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />

37voto

Naganalf Points 689

Si vous avez l'enum

public enum Status {
    YES, NO
}

vous pouvez faire référence à la énumérations dans vos pages jsf comme suit:

<h:outputText value="text" rendered="#{myBean.status == 'YES'}"/>

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:

<h:outputText value="text" rendered="#{myBean.status == 'YESSIR'}"/>

vous obtenez en fait une erreur d'exécution lorsque vous appuyez sur la page parce que la EL analyseur va essayer de contraindre 'YESSIR en Status enum et de l'échec.

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