1

在我的 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);
}

测试.jsp:

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

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

<%=stErrorMsg %>

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

此外,我尝试在我的 formHandler 中使用变量并设置值,但我仍然将值设为 null。可以对此有所帮助。

4

1 回答 1

2

通常,您不能使用 sendRedirect() 方法发送 POST 请求。您可以使用 RequestDispatcher 在相同的 Web 应用程序、相同的上下文中转发()带有参数的请求。

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

HTTP 规范规定所有重定向必须采用GET (或 HEAD)的形式。如果安全是一个问题,您可以考虑加密您的查询字符串参数。另一种方法是您可以通过使用 POST 方法的隐藏表单并在页面加载时使用 javascript 提交它来 POST 到目标。

所以你可以使用Session 方法:我试过我在 JSP 中得到了值。

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

截屏 在此处输入图像描述

希望这有帮助。

于 2019-02-03T19:53:10.603 回答