我正在使用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}"