gpt4 book ai didi

java - session 属性缺少列表

转载 作者:行者123 更新时间:2023-12-01 05:24:54 25 4
gpt4 key购买 nike

我的情况很奇怪。我正在开发一个相当大的 Java 应用程序,但有很多错误,今天我发现了这个。

我将尝试在不发布代码的情况下解释情况,因为这些方法太长,并且我已经识别并隔离了特定问题。这是:

我在 Controller 类上设置了 session 属性。该属性有几个字段、几个 String、几个 int 和一个特定对象类型的 ArrayList。设置如下:

request.getSession().setAttribute(Constants.SESSION_LIST_SEARCH, beanList);

然后还有另一个 Controller 类,我需要在其中读取此属性,如下所示:

request.getSession().getAttribute(Constants.SESSION_LIST_SEARCH);

当 Controller 获取属性(通过正确的转换)时,字符串和 int 字段就在那里,但 ArrayList 是空的。

我找不到答案,所以在绝望中我尝试“克隆”列表来看看发生了什么,所以它是这样的:

request.getSession().setAttribute(Constants.SESSION_LIST_SEARCH, beanList);
/* Desperate developer */
ArrayList<ActivityBean> duplicatedList = new ArrayList<ActivityBean>();
for(ActivityBean foo:beanList.getActivityBean()){
duplicatedList.add(foo);
}
request.getSession().setAttribute("duplicatedList",duplicatedList);

这个解决方法可以解决问题(现在我可以从 session 中正确读取 bean“duplicatedList”),但原始 bean 在某些时候丢失 ArrayList 并仍然保留其他字段似乎不太正确。

提前致谢

最佳答案

似乎在您的应用程序的其他地方,某些代码正在修改 List (因为您说它不是 null 而是空 - 如果它是 null 我希望它被代码的其他部分从上下文中删除)。也许将 List 放入上下文后,某些代码仍然保留引用并对其进行操作?

您可以尝试执行以下操作:

request.getSession().setAttribute(Constants.SESSION_LIST_SEARCH, Collections.unmodifiableList(beanList));

关于java - session 属性缺少列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824971/

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