如何在HttpSession中存储ObjectId并检索它? (MonoDB Java驱动程序)

时间:2019-06-05 04:09:24

标签: java mongodb debugging nullpointerexception mongodb-java

我试图将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

1 个答案:

答案 0 :(得分:0)

如果您的file_put_contents ($newlocation . "/" . $filename , file_get_contents($img) ) 为空或您的NPE返回session,则可能会发生此session.getAttribute("id")

您将必须验证其中是否为空,然后进行一些更正。

我认为您可以尝试以下方法来避免使用null

NPE

或者您可以在IDE中尝试一些调试器以准确地确定问题。