【发布时间】:2014-09-19 15:02:24
【问题描述】:
我在存储会话属性时遇到了一个奇怪的问题 我在会话中将 JSONArray 存储为字符串
JSONArray serverDetails = jsonResponse
.getJSONArray("details"); //server returns details in json format
ServletActionContext.getRequest().getSession().setAttribute("serverDetails", serverDetails.toString());
说在加载 index.jsp 时,下面的数据存储在 session 中
[{"id":"10","si":"1000","ti":"300"},{"id":"40","si":"2000","ti":"400"}]
然后在 jsp 中,当我点击下一个按钮时,我再次从服务器获取下一组详细信息,在 struts 操作中,我将再次将 JSONArray 设置为 session 属性,如上面的代码所示。
现在数据会有所不同,在会话中设置之前的 struts 操作中,详细信息如下所示
[{"id":"100","si":"500","ti":"600"},{"id":"1040","si":"250","ti":"70"}]
在 ajax 成功块中,我将尝试在 jsp 中使用 getAttribute 获取相同的详细信息,但奇怪的是 getAttribute 返回旧值而不是更新的同时(注意新将在操作方法中正确设置)
出于好奇,我尝试设置除 jsonarray 以外的一些字符串,然后我没有看到任何问题,所以我确认设置或获取值时没有任何问题。
然后我尝试存储 ArrayList 值而不是 JSONArray ,同样的问题。
它对 JSONArray 和其他集合对象的表现如何?
另一件事是,它在许多其他情况下对我有用,只是在上述给定的情况下它不起作用。
【问题讨论】:
-
真的很奇怪,你试过 Struts session map 吗?
-
@RomanC 甚至地图没有按预期工作:(
标签: jsp collections struts2 arrays httpsession