2012-03-15 5 views
0

私のGoogle App Engineアプリケーションでは、ログインしたユーザーは他の詳細と共に画像をアップロードできます。私はHttpSessionを使ってロギングを管理しています。ログインしたユーザーがフォームを塗りつぶし、アップロードする写真を選択して[保存]ボタンをクリックすると、SessionがnullのためNullPointerExceptionがスローされます。 (データはデータベースに格納されますが、データがデータベースに格納された後に成功ページに転送しようとするとNullPointerExceptionがスローされます)。HttpSession Null with BlobstoreService

Form action = `blobstoreService.createUploadUrl("https://stackoverflow.com/users/adddetails")` 

私は、[保存]ボタンをクリックした後のトリガーであるservletの上にSystem.out.println(hs.getAttribute("logUserName") + "");を入れています。出力はnullです。

どうすればこの問題を回避できますか?私は私の質問に言及し、データベースにデータを追加すると、ログインしたユーザーがフォームに記入した後

を更新し

は、(/users/adddetails)パスになります。それは適切に働いています。データが追加された後、resp.sendRedirect()メソッドを使用して別のサーブレットにリダイレクトされます。そのサーブレットで私は以下のようにSessionがnullかどうかをチェックしています。

try 

{ 
    HttpSession hs = req.getSession();  

    if(!hs.getAttribute("logUserName").equals(null)) { 
     RequestDispatcher d = req .getRequestDispatcher("/WEB-INF/userhome/add_data.jsp"); 
     d.forward(req, resp); } 

    else { 
     RequestDispatcher d = req .getRequestDispatcher("user_login.jsp"); 
     d.forward(req, resp); 
    } 

} catch (NullPointerException ex) { 

    // NullPointerException thrown from here 

    RequestDispatcher d = req.getRequestDispatcher("user_login.jsp"); 
    d.forward(req, resp); 
}catch (Exception ex) { 
    RequestDispatcher d = req.getRequestDispatcher("/msg/exception.jsp"); 
    d.forward(req, resp); 
} 

NullPointerException上記のコードでcatchブロックからスローされます。 logUserNameは、私がクライアントからサーバにユーザ名を渡すために使用しているパラメータです。

+0

例外のスタックトレースを貼り付けることはできますか?また、logUserNameは、クライアントからサーバーまでユーザー名を渡すために使用しているパラメーターですか?例外がスローされる実際の操作のコードも役立ちます! –

+0

これは絶対に読めません。元の質問を編集してコードを追加できますか? –

+0

@ vishal.biyani申し訳ありません。元の投稿を編集します – Bishan

答えて

1

次のコードを試してください。

HttpSession hs = req.getSession(false); 
if(hs == null)System.out.println("session is null"); 
else { 
    String name = hs.getAttribute("logUserName"); 
    if(name == null)System.out.println("name is null"); 
    else System.out.println(name); 
関連する問題