使用struts2将JSP内容更新到会话中

时间:2013-10-02 21:59:26

标签: java jsp session struts2

我们的应用程序是使用Struts2开发的,可以在JBoss服务器上运行。

我需要开发一个JSP页面,其中将使用来自<s:iterator>的{​​{1}}和<s:property>标记显示网格内容(比如说List对象)存储在会话中。

现在,用户可以添加/更新/删除迭代会话列表生成的行内容。

例如,如果我有一个Peron对象的大小为n的列表,并且在JSP中它显示为

  

姓名年龄联系

     

name1 24 1234456

     

name2 30 45654634

依旧......

用户可以添加/更新/删除任意数量的行,最后可以保存。

如何处理此要求?

1 个答案:

答案 0 :(得分:1)

这很危险......让我们说权力消失了,会话并没有随处可见。

因此,不是更新会话n次,最后一次保存数据,而是简单地保存数据n次。但是这个必要条件被认为可以阻止对数据库的过多访问(可能与成千上万的用户有关),那么你可以像这样使用AJAX和Struts2-JSON-plugin:

  1. 创建一个AJAX操作(在<package>extends="json-default"并返回<result type="json">),实现SessionAware,并从JSP接收一行;
  2. execute()方法中,从会话地图中读取您的列表,添加新行,然后返回SUCCESS;
  3. 在JSP中,创建一个绑定来调用你的AJAX Action(点击行中的按钮,onblur事件,无论你喜欢什么)。
  4. 添加一个按钮来调用另一个Action(AJAX与否,但它也应该实现SessionAware)以将数据保存在数据库中。该操作将简单地从会话映射中读取列表并将其保存在数据库中。
  5. 这样用户可以更改页面,返回并查找以前输入的所有数据,并且您将避免整个页面的大量POST(AJAX + JSON更轻松)。