問題

私のATGアプリケーションでは、checkFormRedirectを使用していくつかのパラメータを持つjspページにユーザーをリダイレクトすると、nullとしてパラメータが取得されます。以下のFormHandlerコードを参照してください:

UserFormHandler:

 public boolean handleUserRedirect(dynamo req, dynamo res){

//using request
req.setParameter("test", "testdata");

//using session
HttpSession session=req.getSession();  
session.setAttribute("uname","testdata"); 

//redirect to test.jsp
return checkFormRedirect("/test/test.jsp","null",req,res);
}
 

test.jsp:

 <% out.println(session.getAttribute("uname")); %>

<% String stErrorMsg=(String)session.getAttribute("uname");%>

<%=stErrorMsg %>

<% request.getParameter("test")%>
 

また、formHandlerで変数を使用して値を設定しようとしましたが、それでもnullとして値を取得しています。これについていくつかの助けができますか?

  ベストアンサー

一般に、sendRedirect()メソッドを使用してPOSTリクエストを送信することはできません。 RequestDispatcherを使用して、同じWebアプリケーション内の同じコンテキスト内のパラメータを持つリクエストをforward()することができます。

 RequestDispatcher dispatcher = servletContext().getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);
 

HTTP仕様では、すべてのリダイレクトはGET(またはHEAD)の形式でなければならないと述べています。セキュリティが問題であれば、クエリ文字列パラメータを暗号化することを検討できます。別の方法は、メソッドPOSTを使用して非表示のフォームを持ち、ページが読み込まれたときにjavascriptで送信することでターゲットにPO

したがって、セッションアプローチを使用できます。私はJSPで値を取得しようとしました。

 <%
      out.println(session.getAttribute("message"));
      session.removeAttribute("message");
%>
/* Or using JSTL */
  <c:out value="${sessionScope.message}" />
  <c:remove var="message" scope="session" />
 

スクリーンショット enter image description here

この助けを願っています。

  同じタグがついた質問を見る

atgatg-dynamooracle-commercedropletatg-droplet