检查表达式语言中的字符串长度



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

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

另外,selectedQuery的getter签名为public String getSelectedQuery(){}。我得到以下错误与最新版本的weblogic服务器。

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

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

这意味着您的环境不支持EL 2.2调用带括号的非getter方法的新特性。

你最好的选择是使用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}"

参见:

  • org.apache.jasper。JasperException:当没有指定默认命名空间
  • 时,函数test必须带前缀。

试试JSTL fn:length()函数:

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

相关内容

  • 没有找到相关文章

最新更新