-2

所以这就是事情。我尝试使用 jsp 在网站主页上显示一些消息列表。但是当tomcat服务器启动时,我只看到这个错误“HTTP Status 500 - java.lang.NullPointerException”,它指向“for(Message message:messageList)”这一行

这是servlet的代码:

public class MainPageServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    MessageManager manager = new MessageManager();
    List<Message> messageList = manager.getMessages();

    request.setAttribute("messages", messageList);

    request.getRequestDispatcher("/main-page.jsp").include(request, response); } }

这是jsp的一部分:

<%
List<Message> messageList = (List<Message>) request.getAttribute("messages");
for (Message message : messageList) {
%>
<div class="row" style="margin-top: 15px">
<div class="col-md-4 col-md-offset-4">
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">
                <%= message.getLogin()%>
            </h3>
        </div>
        <div class="panel-body">
            <%= message.getMessage() %>
        </div>
        <div class="panel-footer">
            Posted at: <%= message.getDate() %>
        </div>
    </div>
</div>
</div>
<%
}
%>

我已经测试了获取 messageList 的结果,它是 100% 好的。那么漏洞在哪里呢?提前感谢您的帮助!

4

2 回答 2

0

在您的 scriptlet 中,首先检查您的消息不为空。喜欢,

if (request.getAttribute("messages") != null){
   List<Message> messageList = (List<Message>) request.getAttribute("messages");
   for (Message message : messageList) {
%>
<div class="row" style="margin-top: 15px">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-primary">
    <div class="panel-heading">
        <h3 class="panel-title">
            <%= message.getLogin()%>
        </h3>
    </div>
    <div class="panel-body">
        <%= message.getMessage() %>
    </div>
    <div class="panel-footer">
        Posted at: <%= message.getDate() %>
    </div>
</div>
</div>
</div>
<%
  }
}
 %>

所以你可能不会遇到空指针异常。如果您没有通过请求获取任何数据,请使用会话在页面上发送值。试着让我知道..

于 2013-10-13T18:03:09.087 回答
0
List<Message> messageList = (List<Message>) request.getAttribute("messages"); 

在这里你没有输入演员..

<%MainPageServlet  messageList = (MainPageServlet) request.getAttribute("messages"); %>

试试这个,它可以帮助你

注意:未测试

于 2013-10-13T20:25:42.137 回答