Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 389
  • Last Modified:

scope of 'Request'

What is the scope of request.setAttribute.

I want to define request.setAttribute in my servlet and retieve in my JSP as request.getAttribute.

i.e.:

I have

request.setAttribute("regSubmit", "reg_submit");

in my servlet, and

i have

if ( request.getAttribute("regSubmit") != null )

in my JSP. But, it always shows exceptions in my servlet. ( I can work with sessions though ).

Any ideas. Thanks.
0
jaggybala2
Asked:
jaggybala2
  • 13
  • 10
  • 2
1 Solution
 
jaggybala2Author Commented:
This is the Exception i got:

14:15:00,179 ERROR [Engine] StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
javax.servlet.ServletException

// blah...blah...blah....

14:15:00,179 ERROR [Engine] ----- Root Cause -----
java.lang.NullPointerException

// blah...blah...blah....
0
 
girionisCommented:
Is this line

> if ( request.getAttribute("regSubmit") != null )

throwing the exception?
0
 
jaggybala2Author Commented:
No..i am getting exception in the servlet .. not in my JSP.

If i have:

HttpSession session = request.getSession();
session.setAttribute("regSubmit", "reg_submit");

in my servlet, and

if ( session.getAttribute("regSubmit") != null )

in my JSP, it works fine.

But, i want to go for request.getAttribute.
               
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
girionisCommented:
Can you post the exact line you are getting the error?
0
 
CEHJCommented:
You should set the attribute into the Session in one request and then retrieve it later from the Session in another/the same one
0
 
CEHJCommented:
>>But, i want to go for request.getAttribute.

That would only be valid for one request
0
 
girionisCommented:
One request is the request you initiate and the response you receive back. Anything else is a different request.
0
 
jaggybala2Author Commented:
Is it possible to send something from my Java Class(servlet) using request.setAttribute() and retrieve it in my JSP using request.getAttribute()

0
 
girionisCommented:
You can if you the servlet is doing the request or if you forward the request.
0
 
jaggybala2Author Commented:
>> That would only be valid for one request

One request is what i need. :-)

>> Can you post the exact line you are getting the error?

As i said, With SESSIONS,

HttpSession session = request.getSession();
session.setAttribute("regSubmit", "reg_submit");

in my Actoin Class, and

if ( session.getAttribute("regSubmit") != null )

in my JSP works fine without any errors.


I want to do similarly like:

request.setAttribute("regSubmit", "reg_submit");   in my Action Class, and

if ( request.getAttribute("regSubmit") != null )   in my JSP


1. First of all, is it correct ?

If it is correct, i think i miss some declarations. For SESSIONS, i have :
HttpSession session = request.getSession();

2. Do i need something like this for my "request" also ?
0
 
jaggybala2Author Commented:
>> You can if you the servlet is doing the request or if you forward the request.
I am forwarding the Action Class to the JSP.  :-)
0
 
girionisCommented:
If you forward from a struts action then just put it in the request of the struts and read it through a taglib.
0
 
jaggybala2Author Commented:
>> just put it in the request of the struts and read it through a taglib

would be better if you could tell me how.
0
 
girionisCommented:
I am not sure... How do you forward the ActionClass?
0
 
jaggybala2Author Commented:
This is my "Action".

<action
                  attribute="testForm"
                  input="/testJSP.jsp"
                  name="testForm"
                  path="/test"
                  scope="request"
                  type="com.yourcompany.struts.testAction"
                  unknown="false"
                  validate="true">
                  <forward
                        name="success"
                        path="/testJSP.jsp"
                        redirect="false"
                        contextRelative="false" />
</action>

i want:

1. request.setAttribute() in my Action Class.
2. Retrieve it using request.setAttribute() in my testJSP.jsp
0
 
girionisCommented:
So from your testActoin you want to go to the testJSP.jsp? Can you show me the code in your action class that you read this path attribute?
0
 
jaggybala2Author Commented:
>> So from your testActoin you want to go to the testJSP.jsp?

Yes..

>> Can you show me the code in your action class that you read this path attribute?

public class TestAction extends Action {

      // --------------------------------------------------------- Instance Variables

      // --------------------------------------------------------- Methods

      /**
       * Method execute
       * @param mapping
       * @param form
       * @param request
       * @param response
       * @return ActionForward
       */
      public ActionForward execute( ActionMapping mapping,
                          ActionForm form,
                          HttpServletRequest request,
                          HttpServletResponse response) {
      
            TestForm testForm = (TestForm) form;
                                request.setAttribute("regSubmit", "reg_submit");
            return mapping.findForward("success");

      }
      
}

AND in my testJSP, I have:

<% if ( request.getAttribute("regSubmit") != null ) { %>
<html:messages id="error">
   <bean:write name="error"/>
</html:messages>
<% } %>


My doubt is how it works when i use Sessions in my Action Class, but not with 'request'.

Thanks for your input.
0
 
girionisCommented:
What you have there should work. Can you tell me what is the output of this:

<%System.out.println("param: " + request.getParameter("regSubmit"));%>

and also of this:

param: <bean:write name= "regSubmit" />
0
 
jaggybala2Author Commented:
Ok...after restarting, now i dont get any errors/exceptions, but

always getting "null".

For <%System.out.println("param: " + request.getParameter("regSubmit"));%> i get,

param: null

and For param: <bean:write name= "regSubmit" /> i get,

javax.servlet.ServletException: Cannot find bean RegSubmit in any scope

please tell me a solution/alternative. I increased to the max. points i have.
0
 
jaggybala2Author Commented:
again with session, it works fine.

With SESSIONS, For

<%System.out.println("param: " + request.getParameter("regSubmit"));%>

as welll as For

param: <bean:write name= "regSubmit" />

i get:

param: reg_submit

0
 
jaggybala2Author Commented:
Sorry...

>> <%System.out.println("param: " + request.getParameter("regSubmit"));%>

is actually:

<%System.out.println("param: " + session.getParameter("regSubmit"));%>
0
 
girionisCommented:
I am really not sure what's going on :(

I suggest you add the parameter to the session and then delete it when you are done.
0
 
jaggybala2Author Commented:
yes..thats what i am doing right now.

<% if ( session.getAttribute("regSubmit") != null ) { %>

  <html:messages id="error">
      <TR class="errFont"><bean:write name="error"/></TR>
   </html:messages>

<% session.setAttribute("regSubmit", null); } %>

I think this wont be bad designing. Isnt it ?
0
 
jaggybala2Author Commented:
>> If you forward from a struts action then just put it in the request of the struts and read it through a taglib.

Could you plese what does this mean.

I'll award the points anyway. Thanks.
0
 
girionisCommented:
I meant what exactly you were doing:

request.setAttribute("regSubmit", "reg_submit");
return mapping.findForward("success");

this should have worked but not sure why it did not.

><% session.setAttribute("regSubmit", null); } %>
>
>I think this wont be bad designing. Isnt it ?

Not at all. FYI you might as well use the removeAttribute method:

session.removeAttribute("regSubmit");

P.s. Thank you for accepting :)
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 13
  • 10
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now