Checking for string length in Expression language
el, jsf, jsf-2, jsp
Solution
This means that your environment doesn't support the new EL 2.2 feature of invoking non-getter methods with parentheses.
Your best bet is using JSTL's `fn:length()` instead.
<html ... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
...
rendered="#{fn:length(tabbedToolbarBean.editor.selectedQuery) gt 0}"
Alternatively, just use `empty` keyword in EL. The difference is that it also checks nullness.
rendered="#{not empty tabbedToolbarBean.editor.selectedQuery}"
See also:
- org.apache.jasper.JasperException: The function test must be used with a prefix when a default namespace is not specified
Problem
I am using JSF and want to have a component that should be rendered only when the value of a String in the associated managed bean is greater than zero. I am doing this : ``` rendered="#{tabbedToolbarBean.editor.selectedQuery.length() gt 0}" ``` Additionally the signature of getter for `selectedQuery` is `public String getSelectedQuery(){}`. I get the following error with the latest version of weblogic server. Error: Function length has an invalid prefix or uses the default namespace which is not defined. Correct the prefix or in a jsp document, put the function inside a tag that defines the tag library namespace What am I missing?Not getting much help after googling.