我试图将ObjectId
存储为HttpSession
属性,然后稍后在程序中检索它。但是,该程序在尝试检索NullPointerException
new ObjectId((String)session.getAttribute("id"))
这是用于存储ObjectId的代码:
HttpSession session = request.getSession();
session.setAttribute("id", collection.find(eq("email", email)).first().getObjectId("_id").toHexString());
session.setAttribute("user_type", userType);
这是用于检索ObjectId的代码:
HttpSession session = request.getSession();
ObjectId id = new ObjectId((String)session.getAttribute("id"));
有趣的是,以下代码不会产生`NullPointerException:
HttpSession session = request.getSession();
System.out.println(session.getAttribute("id").toString());
由此看来,ObjectId
确实确实存储为HttpSession中的一个属性,但是由于某种原因,在尝试以我的方式检索它时会创建一个NullPointerException
。
我如何以不产生此异常的方式检索ObjectId
?
答案 0 :(得分:0)
如果您的file_put_contents ($newlocation . "/" . $filename , file_get_contents($img) )
为空或您的NPE
返回session
,则可能会发生此session.getAttribute("id")
。
您将必须验证其中是否为空,然后进行一些更正。
我认为您可以尝试以下方法来避免使用null
。
NPE
或者您可以在IDE中尝试一些调试器以准确地确定问题。