ATG - 调用 checkFormRedirect 时会话或请求属性为空
ATG - session or request attribute coming as null when checkFormRedirect is called
在我的 ATG 应用程序中,当我使用 checkFormRedirect 使用一些参数将用户重定向到 jsp 页面时,我得到的参数为空。请看下面的 FormHandler 代码:
用户表单处理程序:
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 应用程序、相同的上下文中使用参数转发()请求。
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);
HTTP 规范 声明所有重定向必须采用 GET(或 HEAD) 的形式。如果存在安全问题,您可以考虑加密查询字符串参数。另一种方法是您可以 POST 通过使用方法 POST 的隐藏表单并在加载页面时使用 javascript 提交它来 POST 到目标。
所以你可以使用会话方法:我试过了我得到了JSP中的值。
<%
out.println(session.getAttribute("message"));
session.removeAttribute("message");
%>
/* Or using JSTL */
<c:out value="${sessionScope.message}" />
<c:remove var="message" scope="session" />
截图
希望对您有所帮助。
在我的 ATG 应用程序中,当我使用 checkFormRedirect 使用一些参数将用户重定向到 jsp 页面时,我得到的参数为空。请看下面的 FormHandler 代码:
用户表单处理程序:
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 应用程序、相同的上下文中使用参数转发()请求。
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);
HTTP 规范 声明所有重定向必须采用 GET(或 HEAD) 的形式。如果存在安全问题,您可以考虑加密查询字符串参数。另一种方法是您可以 POST 通过使用方法 POST 的隐藏表单并在加载页面时使用 javascript 提交它来 POST 到目标。
所以你可以使用会话方法:我试过了我得到了JSP中的值。
<%
out.println(session.getAttribute("message"));
session.removeAttribute("message");
%>
/* Or using JSTL */
<c:out value="${sessionScope.message}" />
<c:remove var="message" scope="session" />
截图
希望对您有所帮助。