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

时间:2013-03-29 13:12:10

标签: jsp jsf jsf-2 el

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

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

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

  

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

我缺少什么?谷歌搜索后得不到多少帮助。

2 个答案:

答案 0 :(得分:9)

这意味着您的环境不支持使用括号调用非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}"

另见:

答案 1 :(得分:3)

尝试使用JSTL fn:length()函数:

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