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}"/>
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}"/>
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}" />
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 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.