2013-06-19 66 views
0

基本上我有這個功能,允許人們根據用戶名搜索其他用戶。您鍵入的文本ID =「搜索」,它會尋找用戶與該用戶名/相似的用戶名:Servlet jsp空指針異常

<form name="searchForm" action="searchUser" method="post"> 
<input type="text" id="search" name="search" placeholder="Search.." /> 
<input type="submit" id="searchButton" name="searchButton" value="Search!" onclick="searchUsers()"/> 
</form> 

這是servlet SearchUserServlet映射到行動searchUser.The靜態方法searchUser(String)返回用戶對象的數組列表。我想此ArrayList傳遞給QuickMatchResult.jsp:

public class SearchUserServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 
    public void doPost(HttpServletRequest request, HttpServletResponse response){ 

     try { 

      String name=request.getParameter("search"); 
     ArrayList<User> userList= User.searchUser(name); 



      RequestDispatcher dispatcher=request.getRequestDispatcher("/QuickMatchResult.jsp"); 
      request.getSession().setAttribute("userList",userList); 
      dispatcher.forward(request, response); 
     } catch (ServletException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

這是它被轉發了QuickMatchResult.jsp。我試圖顯示列表中的用戶對象的所有用戶名:

<table id="searchResults"> 
<%  ArrayList<User> userList= new ArrayList<User>(); 
userList=(ArrayList<User>)request.getAttribute("userList"); 
for (int i=0; i<userList.size();i++){ 
User user=userList.get(i); 
%> 
<tr> 
<td><%=user.getUserName()%></td>  
</tr> 
<% 

} 
%> 
</table> 

但是,當我嘗試運行這個,我得到一個空指針異常。任何想法爲什麼?

+1

檢查,如果用戶列表從請求空 – Makky

+0

從會話,而不是要求閱讀用戶列表中JSP作爲你 – Vasu

回答

0

您已在會話中設置了您的屬性,而不是在請求中。使用

request.setAttribute("userList", userList); 

或者如果您想使用會話,那麼檢索JSP中的會話屬性。

session.getAttribute("userList"); 

我們得到了NullPointerException當我們試圖調用該對象的參考不參考對象的方法。即null

在你的情況,你想檢索名爲從request對象userList的屬性,但目前還沒有這樣的request任何屬性。如果getAttribute未找到該屬性,則返回null

+0

感謝隊友設置用戶列表中會!我最初是這樣做的,但它不起作用。 – Blaiz

+0

我認爲他正在設置會議本身 – zerocool

+0

@zerocool你能提供有關該問題的詳細信息嗎?在哪一行你得到NullPointerException和什麼變量?我需要更多信息 –

0

您正在將userList放入sesion對象中,並試圖從請求對象中檢索它。獲得從會話這個名單不是從request.Below應該幫助

userList=(ArrayList<User>)session.getAttribute("userList");