用于检查属性文件中空字符串的JSF EL表达式?

时间:2015-01-20 13:55:55

标签: jsf-2 primefaces el

我必须检查我的属性文件是否为某个标签是空的,因为我必须渲染元素,但即使标签为空,我仍然得到元素显示键:

           <h:panelGroup  rendered="#{not empty I18N['key_hint_message'] }">
          <h:outputLabel id="hint_label" value="#{I18N['key_label_hint']}
           "></h:outputLabel>
          <h:outputText value="#{I18N['key_hint_message']}" ></h:outputText>
          </h:panelGroup>

2 个答案:

答案 0 :(得分:2)

您可以使用ResourceBundle#containsKey()

<h:panelGroup rendered="#{I18N.containsKey('key_hint_message')}">
    <h:outputLabel value="#{I18N['key_label_hint']}" />
    <h:outputText value="#{I18N['key_hint_message']}" />
</h:panelGroup>

您最好不要依赖缺失密钥的默认格式,因为这可以被自定义资源包解析器覆盖。

答案 1 :(得分:0)

JSF实现默认显示缺少资源???resource???,因此您可以在fn:contains属性中使用rendered JSTL函数,如下所示:

 <h:panelGroup  rendered="${not fn:contains(I18N['key_hint_message'], '???')}">
      <h:outputLabel id="hint_label" value="#{I18N['key_label_hint']}"/>
      <h:outputText value="#{I18N['key_hint_message']}" />
 </h:panelGroup>