【问题标题】:JSF EL expressions to check empty string in propery file?JSF EL表达式检查属性文件中的空字符串?
【发布时间】:2015-03-18 18:50:18
【问题描述】:

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

           <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>

【问题讨论】:

  • 对不起,我应该用什么来检查#{I18N['key_hint_message']}是否为空
  • 我认为子表达式需要在大括号下,我错了
  • 我更改了表达式,但我的面板组仍然显示提示:???key_hint_message???
  • 问题现在看起来确实好多了。

标签: jsf-2 primefaces el


【解决方案1】:

您可以为此使用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>

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

【讨论】:

    【解决方案2】:

    JSF 实现默认将缺少的资源显示为???resource???,因此您可以在rendered 属性中使用fn:contains 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2013-06-10
      • 1970-01-01
      • 2023-01-18
      • 2012-07-24
      • 2019-10-10
      • 1970-01-01
      相关资源
      最近更新 更多