サーブレットで次のコマンドを使用して、セッションにユーザーIDを保存しました。
HttpSession session = request.getSession();
session.setAttribute("user", user.getId());
ここで、別のサーブレットからそのユーザーIDにアクセスしたいと思います。
HttpSession session = request.getSession(false);
int userid = (int) session.getAttribute("user"); // This is not working
OR
User user = new User();
user.setId(session.getAttribute("user")); This ain't possible (Object != int)
質問:
int
を保存した場合でも、そのメソッドはオブジェクトを想定しているため、自動ボクシングによりint
はInteger
になります。 Integer
にキャストバックしてみてください。問題ないはずです:
int userid = (Integer) session.getAttribute("user");
ただし、属性がnullの場合は、ここでNullPointerException
を取得するため、Integer
を最後まで使用することをお勧めします。
Integer userid = (Integer) session.getAttribute("user");
この後、userid
がnull
であるかどうかを安全に確認できます。
編集:あなたのコメントに応えて、これが私が「nullをチェックする」という意味です。
Integer userid = (Integer) session.getAttribute("user");
User user = null;
if (userid != null) {
user = new UserDAO().getUser(userid);
}
// here user will be null if no userid has been stored on the session,
// and it wil be loaded from your persistence layer otherwise.
私はJavaが得意ではありませんが、以前はInteger.parseInt(session.getAttribute("user").toString())
一度試してみてください。ただし、toString
を呼び出す前に、必ずsession.getAttribute("user")
に対してcheck null
を実行してください。
Javaには Integer
ラッパークラスがあり、int値をInteger
のオブジェクトに格納できます。
//setting
Integer intObj = new Integer(intVal);
session.setAttribute("key",intObj);
//fetching
Integer intObj = (Integer) session.getAttribute("key");
int userid = (Integer) session.getAttribute("user");
を試してください
Integer userid = Integer.parseInt(session.getAttribute("user"));
これを試して
int userid = Integer.parseInt(session.getAttribute("user").toString());
セッションから2つの文字列を乗算します。
int z = Integer.parseInt((String)session.getAttribute("sintelestis"));
int y = Integer.parseInt((String)session.getAttribute("_embadon_akinitou"));
System.out.println("Ο Συνολικός Φόρος είναι: "+ (z*y));
私はこれを使用しました:
Integer.parseInt(session.getAttribute("String").toString())
これを試してみてください、それは私のために働きました:HttpSession session = request.getSession(); if (session.getAttribute("user") != null) { userid = ((Integer) session.getAttribute("user")).intValue(); } else { userid = 0; }