Wednesday, February 28, 2007

org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported.

Keywords:
Compile JSP tomcat JSTL error functions "org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported"

Problem:
Some fairly standard use of JSTL:
<c:out value="${fn:escapeXml(myvalue)}" />

i.e. using a function in the value field of the c:out tag gives the error:
org.apache.jasper.JasperException:
    <h3>Validation error messages from TagLibraryValidator for c</h3>
    <p>41: tag = 'out' / attribute = 'value': 
        An error occurred while parsing custom action attribute "value" with value "${fn:escapeXml(myvalue)}": 
            org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported.</p>


Solution:
It's the old mismatched spec issue again. Same solution as described in According to TLD or attribute directive in tag file, attribute X does not accept any expressions - namely, fix the schema reference in the web.xml and make sure the JSP has the right tablib uri reference.