Struts2在页面之间导航时如何保持表单值?

Struts2在页面之间导航时如何保持表单值?,struts2,Struts2,我的项目使用struts2+spring3。请帮我解决这个问题 在我的应用程序中,(a.jsp)与-->(aaaction.java)相关 用户可以从主菜单访问a.jsp。jsp中有很多字段,用户需要输入数据。在页面的中间,用户需要去另一个页面(B.JSP)来添加更多的细节。(b.jsp页面不是弹出窗口)向b.jsp添加数据后,用户需要返回a.jsp。如何保留a.jsp页面数据 两个页面只使用一个操作(aaaction.java) 1) 我可以在b.jsp中保留隐藏变量,并在a.jsp中再次填充

我的项目使用struts2+spring3。请帮我解决这个问题

在我的应用程序中,(a.jsp)与-->(aaaction.java)相关

用户可以从主菜单访问a.jsp。jsp中有很多字段,用户需要输入数据。在页面的中间,用户需要去另一个页面(B.JSP)来添加更多的细节。(b.jsp页面不是弹出窗口)向b.jsp添加数据后,用户需要返回a.jsp。如何保留a.jsp页面数据

两个页面只使用一个操作(aaaction.java)

1) 我可以在b.jsp中保留隐藏变量,并在a.jsp中再次填充数据。但是有那么多
jsp中的字段。所以这种方式很乏味


有没有办法用bean范围来处理这个问题?或者其他方法吗?

有几种方法可以做到这一点

  • 在struts.xml中使用重定向操作。定义结果时,可以将类型设置为redirectAction。然后可以重定向到另一个操作,并将参数作为参数添加到url

  • 使用本地存储而不是会话存储。限制为5 MB。使用会话存储时需要小心,因为它会影响服务器的性能

  • 如果您使用的是struts,那么您可以创建自己的类型转换器来传递任何对象。或者,您可以创建一个包含要持久化的值的字符串数组,并在struts.xml中将其作为参数传递(见上文)。Struts内置了类型转换器,用于在页面/操作之间持久化字符串数组

  • 您还可以将它们保存在cookie中,然后在不需要这些值时删除cookie,因为浏览器可以支持的cookie数量有限制

  • 出于上述原因,我通常使用会话存储作为最后手段


您可以在会话中输入值。您还可以使用一些Struts2插件
conversation
actionFlow
,这将帮助您在页面之间存储数据。感谢Aleksandr:)不要切换页面。使用一些合理的UI控件(请参见jQuery UI)和一些ajax,您可以通过一个操作产生更好的结果。如果您不想使用会话,可能类似下面的列表)可以帮助您。不过,我也更喜欢亚历山德的解决方案。只需始终记住你在课程中的内容。