您需要使用binding
属性将UIComponent
实例放在 EL 范围内。与您的预期相反,该id
属性不会这样做。
<h:outputText binding="#{alarmCriticality}" ... />
然后你需要使用UIOutput#getValue()
来获取它的value
属性。
<c:if test="#{alarmCriticality.value == 'Alarm *'}">
也就是说,您最好rendered
在此处使用属性,特别是如果#{summary}
表示 JSF 迭代组件的当前迭代项,如<ui:repeat>
or <h:dataTable>
。
<h:panelGroup layout="block" styleClass="alarm1"
rendered="#{alarmCriticality.value == 'Alarm *'}" />
也可以看看:
与具体问题无关。看到条件渲染依赖于本地化文本很奇怪。如果您更改语言环境和/或本地化文本怎么办?这是非常脆弱的。您最好检查捆绑密钥。
<h:outputText value="#{msg[summary.criticality.key]}" />
<h:panelGroup layout="block" styleClass="alarm1"
rendered="#{summary.criticality.key == 'some.alarm.key'}" />
这样您也不再需要绑定输出文本。