JSP

2011-04-10 8 views
1

でのセッション属性を読んで私は、このような文字列の配列ですcartListというサーブレットにJSP

項目は、String型のオブジェクトの配列です
request.getSession().setAttribute("cartList", items); 

をセッション属性を設定しています。 JSPで

、私は

line123:String[] cartItems = (String[]) request.getSession().getAttribute("cartList"); 
line124:for (int i = 0; i < cartItems.length; i++) { 
    line125:String[] cartItem = cartItems[i].split("\\|"); 

cartItems [i]が空になることはありませんし、このような文字列が含まれていますが、このような上記の属性を呼んでいる、[AAA-000 | 2]。

私は、nullpointerexceptionである行125で例外を取得しています。なぜこのエラーが出るのか分かりません。サーブレット内の「項目」の内容をチェックしています。その項目は空ではありません。 私はこれを解決しようと一日を費やしました。私はウィットの終わりにいる!どんな助けもありがとう!

+0

jsp値が正しくフェッチされていますか?またJSPでは、セッション変数にはrequest.getSession();を書く必要はありません。 –

+0

お返事ありがとうございました。値がJSPで正しくフェッチされているかどうかはわかりません。私はそれをどのようにチェックするのですか?私はrequest.getSession()がセッション属性にアクセスする唯一の方法だと思った。セッション属性にアクセスしてセッションオブジェクトを取得するためにセッションオブジェクトが必要ではないでしょうか?私はrequest.getSession()をしなければなりませんか? – sherry

+0

@ user686997:jspのsessionから値を取得した後、単に 'System.out.println(carItems);'をチェックするだけです。 –

答えて

1

問題は、あなたがセッションからcartItemsを取得していないということではありません。問題は、cartItemsの一部の値にnullが含まれていることです。 split()を呼び出す前に、それが運んでいるものを確認するためにcartItems[i]の値を印刷してください。

String[] cartItems = (String[]) request.getSession().getAttribute("cartList"); 
for (int i = 0; i < cartItems.length; i++) { 
    out.println("cartItems["+i+"]: "+cartItems[i]); 
    String[] cartItem = null; 
    if(cartItems[i]!=null) 
     cartItem = cartItems[i].split("\\|"); 
} 

あなたには、いくつかの値についてnullが表示された場合、バックサーブレットに行くとあなたがcartListにそれらを置く前に、それらにいくつかの値を割り当てることを確認してください。

+0

@craftsmen:あなたのコードスニペットは、配列にnull値があることに気付きました。私は今それを修正しました。ありがとうございました! – sherry

+0

@sherryあなたは歓迎です:)ところで、ちょっとした提案:このような場合にデバッガを使用すると非常に便利で、多くの時間を節約できます。 – craftsman

+0

デバッガの使い方に関するご提案はありますか?これまでのところprintステートメントを使っています。 – sherry