Hi,

I tried to use the EA3 release of the JSTL standard tag library in Resin
2.0.4.

My JSP more or less looks like this:

<%@ taglib uri="http://java.sun.com/jstl/ea/core"; prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/ea/xml"; prefix="x" %>

<c:import url="http://localhost/path/to/file.xml"; var="xml"/>
<x:parse source="$xml" var="doc" />
<x:forEach select="$doc/tic_stream/tic_bericht">
        <x:expr select="Weg" />
        ... and some more XPath expressions
</x:forEach>


I was unable to get this to work due to the following exception:

TypeError: Cannot convert null to an object.
        at org.mozilla.javascript.NativeGlobal.constructError(Unknown
Source)
        at org.mozilla.javascript.NativeGlobal.constructError(Unknown
Source)
        at org.mozilla.javascript.NativeGlobal.typeError0(Unknown Source)
        at org.mozilla.javascript.ScriptRuntime.toObject(Unknown Source)
        at org.mozilla.javascript.Context.toObject(Unknown Source)
        at
org.apache.taglibs.standard.lang.javascript.JavascriptExpressionEvaluator.pu
tAttributesInScope(JavascriptExpressionEvaluator.java:159)
        at
org.apache.taglibs.standard.lang.javascript.JavascriptExpressionEvaluator.ev
aluate(JavascriptExpressionEvaluator.java:104)
        at
org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager.evaluate
(ExpressionEvaluatorManager.java:200)
        at
org.apache.taglibs.standard.tag.el.core.ExpressionUtil.evalNotNull(Expressio
nUtil.java:85)
        at
org.apache.taglibs.standard.tag.el.core.ImportTag.evaluateExpressions(Import
Tag.java:150)
        at
org.apache.taglibs.standard.tag.el.core.ImportTag.doStartTag(ImportTag.java:
101)
        at _traffic2__jsp._jspService(/pda/traffic2.jsp:19)
        at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
        at com.caucho.jsp.Page.subservice(Page.java:485)
        at
com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
        at com.caucho.server.http.Invocation.service(Invocation.java:278)
        at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
        at
com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:847)
        at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213)
        at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
        at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
        at java.lang.Thread.run(Thread.java:484)


It turned out that a null pointer was stored somewhere in the JavaScript
scope for the (null) attribute "caucho.authenticator", which is a built-in
Resin attribute.

Below is a patch for
.../standard/src/org/apache/taglibs/standard/lang/javascript/JavascriptExpre
ssionEvaluator.java that fixed this bug for me. I don't know whether this is
the correct fix, but at least I was able to have my JSP working as I
expected.


--- JavascriptExpressionEvaluator.java.orig     Thu Dec 20 15:48:57 2001
+++ JavascriptExpressionEvaluator.java  Thu Dec 20 15:57:09 2001
@@ -156,7 +156,9 @@
         while (attributes !=null && attributes.hasMoreElements()) {
             attribute = (String)attributes.nextElement();
             value = pageContext.getAttribute(attribute, scope);
-            rhinoScope.put(attribute, rhinoScope,
rhinoContext.toObject(value, rhinoScope));
+            if (value != null) {
+                rhinoScope.put(attribute, rhinoScope,
rhinoContext.toObject(value, rhinoScope));
+            }
         }
     }
 
@@ -174,7 +176,9 @@
         while (attributes !=null && attributes.hasMoreElements()) {
             attribute = (String)attributes.nextElement();
             value = (pageContext.getRequest()).getParameter(attribute);
-            rhinoScope.put(attribute, rhinoScope,
rhinoContext.toObject(value, rhinoScope));
+            if (value != null) {
+                rhinoScope.put(attribute, rhinoScope,
rhinoContext.toObject(value, rhinoScope));
+            }
         }
     }
 }


Please review,


Jeroen

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to