我正在使用JSF,并希望只有当关联的托管bean中的String值大于零时才应该呈现一个组件。我这样做:
rendered="#{tabbedToolbarBean.editor.selectedQuery.length() gt 0}"
此外,selectedQuery
的getter签名为public String getSelectedQuery(){}
。我使用最新版本的weblogic服务器收到以下错误。
错误:函数长度具有无效前缀或使用默认值 未定义的命名空间。更正前缀或在jsp中 document,将函数放在定义标记库的标记内 命名空间
我缺少什么?谷歌搜索后得不到多少帮助。
答案 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}"