在我的一个Servlet中,如果出现错误,我想将message
传递给JSP。
例如,如果页面已加载且一切正常,则JSP将不会为该行打印任何内容
<p class="text-center red">${message}</p>
但是如果Servlet设置了message
属性,我希望message
显示在页面中。
我尝试在转发到JSP页面后关闭该属性,但它无法正常工作
request.getSession().setAttribute("result", "No reports from New York State today please");
request.getRequestDispatcher("/resources/jsp/create_report.jsp").forward(request, response);
request.getSession().setAttribute("result", null);
有没有办法设置只出现在一个JSP页面上然后消失或自动停用的属性?我怎么能做到这一点?
答案 0 :(得分:1)
&#34;一次性使用&#34; 是请求属性的定义(一次意味着服务一个请求)。
如果您需要&#34;一次性使用&#34;,请使用ServletRequest.setAttribute()和ServletRequest.getAttribute()将其存储在请求中。
ServletRequest.setAttribute()
的Javadoc:
在此请求中存储属性。在请求之间重置属性。此方法通常与
RequestDispatcher
一起使用。
答案 1 :(得分:1)
由于之前的答案已声明使用请求而非会话。
变化:
request.getSession().setAttribute("result", "No reports from New York State today please");
到
request.setAttribute("result", No reports from New York State today please");
并且在JSP中也使用JSTL而不是scriptlet:
<p class="text-center red">${result}</p>
答案 2 :(得分:0)
只需将属性设置为HttpServletRequest
,而不是Session
request.setAttribute("result", "No reports from New York State today please");
在你的JSP中简单地说:
<%=(String)request.getAttribute("result")%>