【问题标题】:Checking for string length in Expression language检查表达式语言中的字符串长度
【发布时间】:2013-03-20 04:43:49
【问题描述】:

我正在使用 JSF,并且希望只有当关联托管 bean 中的字符串值大于零时才应该呈现一个组件。我正在这样做:

rendered="#{tabbedToolbarBean.editor.selectedQuery.length() gt 0}"

另外,selectedQuery 的 getter 签名是 public String getSelectedQuery(){}。使用最新版本的 weblogic 服务器时出现以下错误。

错误:函数长度的前缀无效或使用默认值 未定义的命名空间。更正前缀或在jsp中 文档,将函数放在定义标签库的标签内 命名空间

我错过了什么?谷歌搜索后没有得到太多帮助。

【问题讨论】:

    标签: jsp jsf jsf-2 el


    【解决方案1】:

    试试 JSTL fn:length() 函数:

    rendered="#{fn:length(tabbedToolbarBean.editor.selectedQuery) gt 0}"
    

    【讨论】:

      【解决方案2】:

      这意味着您的环境不支持使用括号调用非 getter 方法的新 EL 2.2 功能。

      最好的办法是改用 JSTL 的 fn:length()

      <html ... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
      ...
      rendered="#{fn:length(tabbedToolbarBean.editor.selectedQuery) gt 0}"
      

      或者,只需在 EL 中使用 empty 关键字。不同之处在于它还检查空值。

      rendered="#{not empty tabbedToolbarBean.editor.selectedQuery}"
      

      另见:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-03
        • 2015-06-23
        • 2015-04-02
        • 2012-05-06
        • 2011-01-13
        相关资源
        最近更新 更多