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 にマップされるサーブレット 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 です。arraylist 内のユーザー オブジェクトのすべてのユーザー名を表示しようとしています。

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

ただし、これを実行しようとすると、null ポインター例外が発生します。理由はありますか?

4

2 に答える 2

0

userList を session オブジェクトに入れ、 request オブジェクトから取得しようとしています。リクエストからではなく、セッションからこのリストを取得します。以下が役立ちます

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

リクエストではなくセッションで属性を設定しました。使用する

request.setAttribute("userList", userList);

セッションを使用する場合は、JSP でセッション属性を取得します。

session.getAttribute("userList");

NullPointerExceptionオブジェクトを参照しないオブジェクト参照でメソッドを呼び出そうとすると取得します。すなわちnull

あなたの場合、オブジェクトuserListから名前が付けられた属性を取得しようとしていrequestますが、 にはそのような属性はありませんrequestgetAttribute属性が見つからない場合は、戻りますnull

于 2013-06-19T13:04:42.083 に答える