【问题标题】:HTTP Status 500 - java.lang.NullPointerException Servlet + jspHTTP 状态 500 - java.lang.NullPointerException Servlet + jsp
【发布时间】:2013-10-13 16:36:23
【问题描述】:

所以事情就是这样。我尝试使用 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% 好的。那么漏洞在哪里呢? 提前感谢您的帮助!

【问题讨论】:

  • getMessages() 是否返回 null
  • 不,它正在返回一个消息列表。我通过在控制台中显示结果列表进行了一个简单的测试 - 一切正常。
  • 你检查messageList是否包含空项?

标签: java jsp tomcat servlets


【解决方案1】:

首先在您的 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>
<%
  }
}
 %>

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

【讨论】:

  • 使用“if-dummy”网站有效,但没有消息。因此,也许您可​​以提供建议,如何在加载后在网站上显示收集到的信息?
  • 这意味着您没有在您的 jsp 页面中获取任何数据。您是否尝试过会话而不是我上面提到的请求?
【解决方案2】:
List<Message> messageList = (List<Message>) request.getAttribute("messages"); 

这里你没有输入 cast..

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

试试这个,可能对你有帮助

注意:未经测试

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 2014-12-24
    • 2014-03-21
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多