aspose file tools*
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 Soft Skills this week in the Jobs Discussion 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: 61761
    
  67

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: 1027
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: 61761
    
  67

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.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Problem in accessing an attribute through action elements