Checking for string length in Expression language

12,960

Solution 1

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:

Solution 2

Try the JSTL fn:length() function:

rendered="#{fn:length(tabbedToolbarBean.editor.selectedQuery) gt 0}"
Share:
12,960
Inquisitive
Author by

Inquisitive

Updated on June 30, 2022

Comments

  • Inquisitive
    Inquisitive almost 2 years

    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.