wood burning stoves 2.0*
The moose likes JSP and the fly likes Problem in accessing an attribute through action elements Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » JSP
Bookmark "Problem in accessing an attribute through action elements" Watch "Problem in accessing an attribute through action elements" New topic
Author

Problem in accessing an attribute through action elements

tarun bansal
Greenhorn

Joined: Mar 21, 2006
Posts: 11
Hi

I had developed a sample web app which contains a counter class, the code for which is
package foo;

public class Counter{
private static int count;
public static synchronized int getCount(){
count++;
return count;
}
public static void setCount(int y){
count=y;
}
}
I am setting the counter attribute in the request scope with the servlet, testServlet, the code for which is

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class testServlet extends HttpServlet{

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{

response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("In Servlet");
foo.Counter c=new foo.Counter();
c.setCount(9);
request.setAttribute("Counter",c);

RequestDispatcher view=request.getRequestDispatcher("test.jsp");
view.forward(request,response);
}
}

Now i am trying to access this attribute in a JSP namely test.jsp the code for which is

<html><body>
<jsp:useBean id="counter" class="foo.Counter" scope="request"/>
person created by servlet:<jsp:getProperty name="counter" property="count"/>
</body></html>

however tomcat server is giving me a 500 error message.

Please anylyse the code and tell me where i had made a mistake.

Thanks and Regards,

Tarun Bansal
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 60738
    
  65

however tomcat server is giving me a 500 error message.


A 500 error could be anything. You'll need to inlcude more details about the nature of the error -- the stack trace for example.


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
tarun bansal
Greenhorn

Joined: Mar 21, 2006
Posts: 11
The full Stack is

StandardWrapperValve[testJSP]: Servlet.service() for servlet testJSP threw exception
org.apache.jasper.JasperException: Cannot find any information on property 'count' in a bean of type 'foo.Counter'
at org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:837)
at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1015)
at org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:1062)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Generator.generate(Generator.java:3272)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at testServlet.doGet(testServlet.java:18)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Stefan Evans
Bartender

Joined: Jul 06, 2005
Posts: 1016
The problem is that your get/set methods are declared as static.

The javabeans introspector doesn't recognise static get/set methods as accessors to properties, and thus you can't use them with
<jsp:getProperty> or EL expressions.

Have you deliberately used a static count?
Maybe try the method like this:



I'm not entirely certain what you are trying to accomplish here, but this should get things running
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 60738
    
  65

Your code is incredibly difficult to read because you did not use the UBB code tags to preserve its formatting, but indeed, your class does not have a count JavaBean property.

Hint: properties are defined by instance methods that follow the JavaBean accessor/mutator patterns.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Problem in accessing an attribute through action elements
 
Similar Threads
runtime ERROR
JSTL does not show values
request.getRequestDispatcher
Counter using Session Tracking !!
Servlet not being called