На самом деле это больше связано с EL, чем с JSF. Созданная вами конструкция действительна, но вы должны иметь в виду, что значения перечисления в EL 2.1 фактически оцениваются как значения String
. Если String.valueOf(mrBean.getStuff())
равно String.valueOf(mrsBean.getStuff())
, ваш пример кода будет отображаться. В EL 2.2 будет работать та же самая конструкция, но они оцениваются как истинные перечисления.
Обратите внимание, что для получения значения перечисления действительно требуется метод getter. Учитывая тот факт, что перечисления обрабатываются как String
, вы, по сути, можете просто сделать:
<h:outputText value="text" rendered="#{mrBean.stuff == 'FOO'}" />
В текущей версии EL 2.2 вы не можете получить прямой доступ к значениям перечисления следующим образом:
<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />
Это возможно только при использовании OmniFaces <o:importConstants>
:
<o:importConstants type="com.example.Stuff" />
...
<h:outputText value="text" rendered="#{mrBean.stuff == Stuff.FOO}" />