我有一个servlet,我想从它向jsp文件发送数据:
String errmsg = "Services not available!";
request.setAttribute("errmsg",errmsg);
request.getRequestDispatcher("/WEB-INF/web/csrCustomerLists/custListDetails.jsp").forward(request, response);
可悲的是,该属性未在文件中设置,我在jsp中收到null。我尝试了两种方法:
<div> <% String message = (String) request.getAttribute("errmsg");</div>
out.println("Servlet communicated message to JSP: "+ message);%>
<div>Try no:2<c:out value="${errmsg}"/></div>
我用萤火虫检查了,我得到了这个:
Servlet communicated message to JSP: null
提前致谢。
更新: 毕竟我设法弄错了:
java.lang.IllegalStateException:请求上下文中没有隐式变量[javax.portlet.response]。
答案 0 :(得分:0)
以另一种方式尝试
将这些值保留在会话
中语法session.setAttribute("errmsg",errmsg);
并检索session.getAttribute("errmsg");
在servlet中这样做
HttpSession session =request.getSession();
session.setAttribute("errmsg",errmsg);
在jsp页面中只需session.getAttribute("errmsg");
答案 1 :(得分:0)
您获得null
,因为您使用的是JSP页面URL,其中仍未设置值。您应该使用servlet URL来查看值。因为,值应该从Servlet
传递给JSP。所以你的网址应该是:
http://localhost:8080/AppName/ServletURL // After hit this URL
| // value will be forwarded to JSP
|
|
http://localhost:8080/AppName/MyJSP.jsp // this will be invoked with
// requestDispatcher.forward
答案 2 :(得分:0)
看起来问题就在这里
<div> <% String message = (String) request.getAttribute("errmsg");</div>
您必须正确关闭scriptlet。试试这个:
<div>
<% String message = (String) request.getAttribute("errmsg");
out.println("Servlet communicated message to JSP: "+ message);%>
</div>