You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-user@tomcat.apache.org by "Vianen, Jeroen van" <je...@satama.com> on 2001/12/20 16:03:58 UTC
[standard] Null in Javascript scope patch
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: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: [standard] Null in Javascript scope patch
Posted by Shawn Bayern <ba...@essentially.net>.
Jeroen,
Thanks; that's a sensible patch. I've fixed the behavior in the current
archive.
Shawn
On Thu, 20 Dec 2001, Vianen, Jeroen van wrote:
> 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: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>