私の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
は、私がクライアントからサーバにユーザ名を渡すために使用しているパラメータです。
例外のスタックトレースを貼り付けることはできますか?また、logUserNameは、クライアントからサーバーまでユーザー名を渡すために使用しているパラメーターですか?例外がスローされる実際の操作のコードも役立ちます! –
これは絶対に読めません。元の質問を編集してコードを追加できますか? –
@ vishal.biyani申し訳ありません。元の投稿を編集します – Bishan