Satyam Pisal
Satyam Pisal

Reputation: 126

Data Injection from controller to jsp page

I want to pass a data from controller method to jsp page. In doing so, using HttpServletRequest.setAttribute().

Now, I can pass it to the just next jsp page. But, I want to hold that data for few more pages.

In this case, what should I do?

Flow of Data:

Controller method1 --> jsp page1 --> jsp page2 --> jsp page3 --> jsp page4 --> Controller method2

I tried setting attribute in each page but it returns null value, as follows

<% request.setAttribute("accId", request.getAttribute("accountId")); %>

Upvotes: 2

Views: 564

Answers (1)

Anish B.
Anish B.

Reputation: 16539

You have to use session in jsp when sending data from one page to another.

A demo to show this.

For example :

Create a DemoController class.

@Controller
public class DemoController {

    @RequestMapping(value = "/getid", method = RequestMethod.POST)
    public String getAccountID(Model model) {
        model.addAttribute("accountId", "ABC1234"); // example 
        return "account";
    }
}

Suppose, create an account.jsp.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
     <% 
       String accountId = request.getAttribute("accountId");
       out.println("account.jsp -> " + accountId);
       session.setAttribute("accId", accountId);
     %>
     <form action="account2.jsp" method="post">
       <input type="submit" name="Submit">
     </form>
    </body>
    </html>

Create another page with the name account2.jsp :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        </head>
        <body>
         <% 
           String accId = (String) session.getAttribute("accId");
           out.println("account2.jsp -> " + accountId);
           // now you want to sent it to the another controller
           // set the parameter in the session and retrieve it in the controller.
          session.setAttribute("accountId", accId); 
         %>
        </body>
        </html>

Create a DemoController2 class :

@Controller
public class DemoController2 {

    @RequestMapping(value = "/getid2", method = RequestMethod.POST)
    public String getAccountId2(HttpSession session) {
        String id = (String) session.getAttribute("accountId"); // example
        System.out.println(id); 
        return "some-page-name";
    }
}

Upvotes: 2

Related Questions