0

基本上我有这个功能,允许人们根据他们的用户名搜索其他用户。您在文本框 id="search" 中输入,它将查找具有该用户名/相似用户名的用户:

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

这是映射到动作 searchUser 的 servlet SearchUserServlet。静态方法 searchUser(string) 返回用户对象的数组列表。我正在尝试将此数组列表传递给 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>

但是,当我尝试运行它时,我得到一个空指针异常。知道为什么吗?

4

2 回答 2

0

您已在会话中设置属性,而不是在请求中。利用

request.setAttribute("userList", userList);

或者如果您想使用会话,则在 JSP 中检索会话属性。

session.getAttribute("userList");

NullPointerException当我们试图在不引用对象的对象引用上调用方法时,我们会得到。即null

在您的情况下,您正在尝试userListrequest对象中检索一个名为的属性,但在request. 如果getAttribute没有找到该属性,则返回null

于 2013-06-19T13:04:42.083 回答
0

您将 userList 放入会话对象中并尝试从请求对象中检索它。从会话而不是从请求中获取此列表。下面应该有帮助

userList=(ArrayList<User>)session.getAttribute("userList");
于 2013-06-19T13:10:11.853 回答