2013-10-13 160 views
-2

因此,這是事情。我嘗試使用jsp在網站的主頁上顯示一些消息列表。但是,當tomcat服務器啓動時,我只能看到這個錯誤「HTTP狀態500 - java.lang.NullPointerException」,指向「for(Message message:messageList)」HTTP狀態500 - java.lang.NullPointerException Servlet + jsp

這裏是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> 
<% 
} 
%> 

我在得到給messageManager的結果測試,它是100%確定。那麼錯誤在哪裏? Thnx提前幫忙!

+0

getMessages()返回null嗎? –

+0

不,它返回一個消息列表。我通過在控制檯中顯示結果列表做了一個簡單的測試 - 一切正常。 – user2855400

+0

您是否檢查'messageList'是否包含空項目? –

回答

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> 
<% 
    } 
} 
%> 

所以你可能不會遇到空指針異常。如果您沒有通過請求使用會話獲取任何數據以在整個頁面上發送值。嘗試,讓我知道..

+0

使用「if-dummy」網站工作,但沒有消息。所以,也許你可以給出建議如何在加載後在網站上顯示收集到的信息? – user2855400

+0

這意味着你沒有在你的jsp頁面中獲取任何數據。你是否嘗試了會話而不是像上面提到的那樣請求? –

0
List<Message> messageList = (List<Message>) request.getAttribute("messages"); 

這裏你沒有強制類型轉換..

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

試試這個,它可以幫助你

注:未測試

相關問題