Servlet不向jsp页面发送属性

时间:2013-12-11 08:22:11

标签: java jsp servlets

我有一个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]。

3 个答案:

答案 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>