ATG - атрибут сессии или запроса, равный нулю, когда вызывается checkFormRedirect
В моем приложении ATG, когда я перенаправляю пользователя на страницу jsp с некоторыми параметрами, используя checkFormRedirect, я получаю параметры как нулевые. Пожалуйста, смотрите ниже код 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 и установить значение, и все же я получаю значение как ноль. Может ли помочь в этом.
1 ответ
Как правило, вы не можете отправить запрос POST с помощью метода sendRedirect(). Вы можете использовать RequestDispatcher для пересылки () запросов с параметрами в одном и том же веб-приложении и в одном контексте.
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);
Спецификация HTTP утверждает, что все перенаправления должны быть в форме GET (или HEAD). Вы можете зашифровать параметры строки запроса, если проблема в безопасности. Другой способ - вы можете POST к цели, имея скрытую форму с методом POST и отправляя ее с помощью javascript при загрузке страницы.
Таким образом, вы можете использовать подход Session: я попробовал получить значение в JSP.
<%
out.println(session.getAttribute("message"));
session.removeAttribute("message");
%>
/* Or using JSTL */
<c:out value="${sessionScope.message}" />
<c:remove var="message" scope="session" />
Надеюсь, это поможет.