tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Najeed Ahmed Khan" <>
Subject javax.el.ELContext.getFunctionMapper().resolveFunction() returns null always
Date Fri, 13 Feb 2009 07:01:52 GMT


I'm developing an application to parse EL scripts in a file and evaluate
them. I am using Java Unified EL for the same. The value expressions are
resolving fine however the functions are not. I'm using Tomcat 6.0.10
which is bundled with JBoss 4.2.3.


The way I am evaluating the expression is:


final MethodExpression methodExpr =

exprFactory.createMethodExpression(jspContext.getELContext(), el,
expectedType, paramTypes);

Object result = methodExpr.invoke(jspContext.getELContext(), params);


However, the function is not being invoked and I get a stack trace like

2009-02-12 22:35:13,629 [http-] ERROR STDERR () -
javax.el.ELException: Function 'testtld:escapeJava' not found

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at

2009-02-12 22:35:13,630 [http-] ERROR STDERR () -     at


The jsp page that I am using to obtain the ELContext has the taglib
directive to include that particular tld. If I invoke that JSP function
from a JSP page(using EL), it works fine. However, when I try to resolve
the function programmatically as above, I get the error.


When I checked the Tomcat source code, I noticed in
org.apache.jasper.el.ELContextImpl :


private final static FunctionMapper NullFunctionMapper = new
FunctionMapper() {

        public Method resolveFunction(String prefix, String localName) {

            return null;





And a few lines below that,


private FunctionMapper functionMapper = NullFunctionMapper; // immutable


Although there is a 
    public void setFunctionMapper(FunctionMapper functionMapper) {
        this.functionMapper = functionMapper;


I am not sure whether that is invoked or how to have it invoked.


This could be the problem for me as the
ELContext.getFunctionMapper().resolveFunction(...) would return null and
I receive a message which corresponds to the Method object resolving to


I searched over the internet and did not come up with anything
related/conclusive that could point me towards a configuration or
programmatic step that I could've missed.


I'd appreciate it if you could give me some pointers as to what might be
the problem here and how to fix it. Also, I do not understand why the
org.apache.jasper.el package is being used instead of the org.apache.el
package which is the newer implementation.





  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message