You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Werner van Mook <we...@connecties.com> on 2004/03/18 16:17:31 UTC
What's wrong with this picture.
Hi all,
I created a jsp with this tag :
<ina:displayResponse />
I included a taglib directive and did all things I should do to get it
working.
The class for this tag is :
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
import util.Message;
public class DisplayResponse extends TagSupport {
// The next line is line 54
Enumeration e =
pageContext.getAttributeNamesInScope(PageContext.REQUEST_SCOPE);
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
if(e.hasMoreElements()) {
out.println((String)e.nextElement());
} else {
out.println("It has no more elements.");
}
out.println("Just transformed o into message.");
} catch (IOException ioe) {
ioe.printStackTrace();
}
return SKIP_BODY;
}
}
If I run this I get a nullPointerException on the line defining the
enumeration.
see :
javax.servlet.ServletException
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageCont
extImpl.java:864)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContex
tImpl.java:800)
org.apache.jsp.view_jsp._jspService(view_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
va:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause
java.lang.NullPointerException
tags.DisplayResponse.(DisplayResponse.java:54)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorA
ccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
tructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:274)
java.lang.Class.newInstance0(Class.java:308)
java.lang.Class.newInstance(Class.java:261)
org.apache.jasper.runtime.TagHandlerPool.get(TagHandlerPool.java:161)
org.apache.jsp.view_jsp._jspx_meth_ina_displayResponse_0(view_jsp.java:
78)
org.apache.jsp.view_jsp._jspService(view_jsp.java:59)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
va:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
If I would change it to someting like :
Enumeration e =
((HttpServletRequest)pageContext.getRequest()).getAttributeNames();
I get the expected result.
see :
message Just transformed o into message.
According to the docs getAttributeNamesInScope can only throw :
java.lang.IllegalArgumentException or
java.lang.IllegalStateException
So is this a bug?
Or did I miss something?
Werner van Mook
Java Lead Developer / Trainer
Connecties Voor Internet
Re: What's wrong with this picture.
Posted by Antonio Fiol BonnĂn <fi...@terra.es>.
I have never worked with taglibs, but...
Your NullPointerException can only be caused because pageContext is null.
Can you access the pageContext (I understand it must be a field from
TagSupport) *before* doStartTag() is called?
You can try moving that line to be the first line *inside* the method.
Just a very wild guess.
Antonio Fiol
Werner van Mook wrote:
> Hi all,
>
> I created a jsp with this tag :
>
> <ina:displayResponse />
>
> I included a taglib directive and did all things I should do to get
> it working.
>
> The class for this tag is :
>
> import java.io.IOException;
> import java.util.Enumeration;
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.jsp.JspException;
> import javax.servlet.jsp.JspWriter;
> import javax.servlet.jsp.PageContext;
> import javax.servlet.jsp.tagext.TagSupport;
>
> import util.Message;
>
> public class DisplayResponse extends TagSupport {
>
> // The next line is line 54
> Enumeration e =
> pageContext.getAttributeNamesInScope(PageContext.REQUEST_SCOPE);
>
> public int doStartTag() throws JspException {
> JspWriter out = pageContext.getOut();
>
> try {
> if(e.hasMoreElements()) {
> out.println((String)e.nextElement());
> } else {
> out.println("It has no more elements.");
> }
> out.println("Just transformed o into message.");
> } catch (IOException ioe) {
> ioe.printStackTrace();
> }
> return SKIP_BODY;
> }
> }
>
> If I run this I get a nullPointerException on the line defining the
> enumeration.
> see :
>
>
> javax.servlet.ServletException
>
> org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageCont
> extImpl.java:864)
>
> org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContex
> tImpl.java:800)
> org.apache.jsp.view_jsp._jspService(view_jsp.java:67)
>
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
> va:311)
>
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 301)
>
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>
>
> root cause
> java.lang.NullPointerException
> tags.DisplayResponse.(DisplayResponse.java:54)
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorA
> ccessorImpl.java:39)
>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
> tructorAccessorImpl.java:27)
> java.lang.reflect.Constructor.newInstance(Constructor.java:274)
> java.lang.Class.newInstance0(Class.java:308)
> java.lang.Class.newInstance(Class.java:261)
>
> org.apache.jasper.runtime.TagHandlerPool.get(TagHandlerPool.java:161)
>
> org.apache.jsp.view_jsp._jspx_meth_ina_displayResponse_0(view_jsp.java:
> 78)
> org.apache.jsp.view_jsp._jspService(view_jsp.java:59)
>
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
> va:311)
>
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 301)
>
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>
>
> If I would change it to someting like :
>
> Enumeration e =
> ((HttpServletRequest)pageContext.getRequest()).getAttributeNames();
>
> I get the expected result.
> see :
>
> message Just transformed o into message.
>
>
> According to the docs getAttributeNamesInScope can only throw :
> java.lang.IllegalArgumentException or
> java.lang.IllegalStateException
>
>
> So is this a bug?
> Or did I miss something?
>
>
>
> Werner van Mook
> Java Lead Developer / Trainer
> Connecties Voor Internet