簡體   English   中英

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);
}

測試.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 的隱藏表單並在頁面加載時使用 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" />

截屏在此處輸入圖片說明

希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM