Ввод данных с контроллера на страницу jsp - PullRequest
2 голосов
/ 11 апреля 2020

Я хочу передать данные из метода контроллера на страницу jsp. При этом, используя HttpServletRequest.setAttribute ().

Теперь я могу передать его на следующую jsp страницу. Но я хочу сохранить эти данные еще на нескольких страницах.

В таком случае, что мне делать?

Поток данных:

Метод контроллера1 -> jsp page1 -> jsp page2 -> jsp page3 -> jsp page4 -> метод контроллера2

Я пытался установить атрибут на каждой странице, но он возвращает нулевое значение, как показано ниже

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

1 Ответ

2 голосов
/ 11 апреля 2020

Вы должны использовать session в jsp при отправке данных с одной страницы на другую.

Демонстрация, чтобы показать это.

Например:

Создайте класс DemoController.

@Controller
public class DemoController {

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

Предположим, создайте 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>

Создайте еще одну страницу с именем 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>

Создайте класс DemoController2:

@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";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...