gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:49:41 25 4
gpt4 key购买 nike

我试图将 ObjectId 存储为 HttpSession 属性,然后稍后在程序中检索它。但是,当尝试检索 new ObjectId((String)session.getAttribute("id"))

时,程序会产生 NullPointerException

这是存储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 中,但由于某种原因,在尝试在 HttpSession 中检索它时会创建 NullPointerException就像我做的那样。

如何以不产生此异常的方式检索 ObjectId

最佳答案

如果您的 session 为 null 或您的 session.getAttribute("id") 返回 null<,则可能会发生此 NPE/.

您必须验证其中任何一个是否为空,然后应用一些更正。

我认为您可以尝试以下方法来避免NPE

HttpSession session = request.getSession();
if(session == null){
System.println("session is null");
}else{
Object _id = session.getAttribute("id");
ObjectId id = _id != null ? new ObjectId((String)_id) : _id;
}

或者您可以在 IDE 中尝试一些调试器来准确识别问题。

关于java - 如何在 HttpSession 中存储 ObjectId 并检索它? (MonoDB Java 驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56454148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com