Условное использование RequestDispatcher для отправки одного и того же Java-объекта на несколько страниц JSP

Пожалуйста, потерпите меня, так как я новичок в JSP. Заранее благодарю за помощь; Я очень ценю это.

ФОН

Я пытаюсь создать веб-приложение, которое "запоминает" определенные объекты Java во время сеанса входа пользователя. В настоящее время у меня есть сервлет, который использует RequestDispatcher для отправки объекта на страницу JSP через его метод doPost.

Вот doPost сервлета:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws     ServletException, IOException {

    String strBook = "Test Book";

    // Send strBook to the next jsp page for rendering
    request.setAttribute("book", strBook);
    RequestDispatcher dispatcher = request.getRequestDispatcher("sample.jsp");
    dispatcher.include(request, response);

}

Sample.jsp получает объект strBook и обрабатывает его. Тело sample.jsp выглядит так:

<body>

<% 
    // Obtain strBook for rendering on current page
    String strBook = (String) request.getAttribute("book"); 

    /*
      // TODO: A way to conditionally call code below, when form is submitted 
      // in order for sample2.jsp to have strBook object.

      RequestDispatcher dispatcher = request.getRequestDispatcher("sample2.jsp");
      dispatcher.include(request, response);
    */

%>


<h1> Book: </h1>
<p> <%=strBook%> </p>

<form action="sample2.jsp"  method="post">
    <input type="submit" id="buttonSubmit" name="buttonSubmit" value="Buy"/>
</form>

</body>

ПРОБЛЕМА

Как мне взять объект strBook из sample.jsp и отправить его в sample2.jsp, КОГДА нажимается кнопка отправки (чтобы объект strBook можно было использовать в sample2.jsp)?

В настоящее время тело sample2.jsp выглядит так, а strBook внутри имеет значение null:

<body>

<% 
    // Obtain strBook for rendering on current page
    String strBook = (String) request.getAttribute("book"); 
%>


<h1> Book: </h1>
<p> <%="SAMPLE 2 RESULT " + strBook%> </p>

</body>

1 ответ

Решение

Вы можете передать его в качестве параметра для следующего JSP.

Sample1.jsp

<form action="sample2.jsp"  method="post">
   <input type="submit" id="buttonSubmit" name="buttonSubmit" value="Buy"/>
   <input type="hidden" name="book" value="<%=strBook%>"/>
</form>

Sample2.jsp

 <% 
// Obtain strBook for rendering on current page
String strBook = (String) request.getParameter("book"); 
 %>


<h1> Book: </h1>
<p> <%="SAMPLE 2 RESULT " + strBook%> </p>
Другие вопросы по тегам