DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=29402>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=29402 ClassCastException when using commons-el.jar and standard.jar el evaluator Summary: ClassCastException when using commons-el.jar and standard.jar el evaluator Product: Commons Version: 1.0 Final Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Critical Priority: Other Component: EL AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Runing Tomcat 5.0.14 and 5.0.25. Using Apache standard.jar taglibs. I am writing a custom tag that accept el expression in attributes. My tag class is using pageContext.getExpressionEvaluator.evaluate to evaluate el expressions. In a jsp page, when using only my custom tag like this: <mytag:setLocale value="${cookie.Language.value}"/>, it work fine and evaluate to the correct cookie value. But when I am using any tag from standard.jar, problem occurs. For example, when inserting <c:out value="${cookie.Language.value"}/> before mytag:setLocale, pageContext.getExpressionEvaluator.evaluate throws a ClassCastException. When c:out is inserted after mytag:setLocale, the ClassCastException is thrown from standard.jar. I have found the potential cause: when mytag:setLocale is called first, pageContext.getExpressionEvaluator.evaluate appens to add in the pageContext attributes hashMap an object of type org.apache.commons.el.ImplicitObjects with key "org.apache.taglibs.standard.ImplicitObjects". Then when c:out is called next, it retreive the from the pageContext the key "org.apache.taglibs.standard.ImplicitObjects", wich is not of type org.apache.taglibs.standard.lang.jstl.ImplicitObjects. The reverse appens when c:out is called first; an object with the key "org.apache.taglibs.standard.ImplicitObjects" of type org.apache.taglibs.standard.lang.jstl.ImplicitObjects is added in the pageContext attributes hashMap. And when mytag:setLocale is called, org.apache.commons.el.ImplicitObjects.getImplicitObjects throws a ClassCastException when pContext.getAttribute returns with an object of type org.apache.taglibs.standard.lang.jstl.ImplicitObjects. The source of the problem is that both package insert or retreive from the pagecontext attributes hashMap the same key name ("org.apache.taglibs.standard.ImplicitObjects"), but with different type. Base on the key name, I guess standard.jar is correct in using it, but commons- el.jar is not. I tested a modified commons-el.jar with member sAttributeName from org.apache.commons.el.ImplicitObjects setted to, well, "org.apache.commons.el.ImplicitObjects". It worked just fine both cases. The problem would only occurs if el evaluator from both package are called in the same jsp page with jsp's implicit objects. I dosen't have to be the same implicit object. Since I can't beleive I am the first one with this problem, I first tried find something wrong in my setup/code. But it seems not. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
