JSP - 无法从属性中检索数据。 (了request.setAttribute)

时间:2013-11-18 08:36:31

标签: java jsp java-ee struts

如果role!='user'重定向到login.php操作。重定向工作正常,但不显示msg属性的内容。 索引页面的代码:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:if test="${sessionScope.role ne 'user'}">
    <%
        request.setAttribute("msg", "Please Login to select Theme");
        response.sendRedirect("login.php");
    %>
 </c:if>

登录页面代码:

<h1>${requestScope.msg}</h1>

请帮助。

3 个答案:

答案 0 :(得分:0)

您无法使用request传递sendRedirect属性值。使用session代替request

 <%
    session.setAttribute("msg", "Please Login to select Theme");
    response.sendRedirect("login.php");
 %>

login.php页面:

<h1>${sessionScope.msg}</h1>

<h1>${msg}</h1>

答案 1 :(得分:0)

  • 如果要使用请求范围传递数据,请使用请求调度程序的转发方法。
  • 如果将消息发送到下一页是唯一预期的事情(即请求范围不是强制性的),则使用会话范围保存消息并在下一页(我们使用sendRedirect到达)中检索它。请记住在使用后从会话中删除密钥,以避免会话范围膨胀。

答案 2 :(得分:0)

这解决了我的目的:
request.getRequestDispatcher("login.php").forward(request, response);

Source帮助。感谢您提及response.sendRedirect();需要会话范围