在我的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中使用变量并设置value,但仍然将value设为null。可以帮上忙。
答案 0 :(得分:1)
通常,您不能使用sendRedirect()方法发送POST请求。您可以使用RequestDispatcher在同一Web应用程序,相同上下文中使用参数转发()请求。
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);
HTTP规范指出,所有重定向都必须采用 GET(或HEAD)的形式。如果安全问题,可以考虑加密查询字符串参数。另一种方法是,通过使用POST方法隐藏表单,然后在加载页面时使用javascript提交表单,即可发布到目标。
因此您可以使用会话方法:我尝试了在JSP中获得该值。
<%
out.println(session.getAttribute("message"));
session.removeAttribute("message");
%>
/* Or using JSTL */
<c:out value="${sessionScope.message}" />
<c:remove var="message" scope="session" />
希望获得帮助。