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

Inq*_*ive 6 jsf jsp el jsf-2

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

rendered="#{tabbedToolbarBean.editor.selectedQuery.length() gt 0}"
Run Code Online (Sandbox Code Playgroud)

此外,吸气剂的签名selectedQuerypublic String getSelectedQuery(){}.我使用最新版本的weblogic服务器时出现以下错误.

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

我错过了什么?谷歌搜索后得不到多少帮助.

Bal*_*usC 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}"
Run Code Online (Sandbox Code Playgroud)

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

rendered="#{not empty tabbedToolbarBean.editor.selectedQuery}"
Run Code Online (Sandbox Code Playgroud)

也可以看看: