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" />

Скриншот

Надеюсь, это поможет.

Другие вопросы по тегам