我目前正在开发一个集成向导/工作流的 Struts2 应用程序,以产生所需的结果。为了更清楚,有一个业务对象在三个不同的页面上发生了变化(主要是通过 AJAX 调用)。目前,我正在使用 ModelDriven 操作(通过使用同一业务对象的所有操作进行扩展)以及 Scope 拦截器。虽然如果用户一次只处理一个业务对象的数据,这可以正常工作,但如果用户在多个选项卡中打开不同对象的向导(当我们想要更快地完成事情时,我们都会这样做)一切都会变得混乱,主要是因为我在会话中只存储了一个业务对象。
我已经阅读了几篇关于使用对话作用域拦截器(主要文章)和关于使用作用域插件(这里)的文章。但是,这两种方法似乎都有问题:
- 对话范围拦截器不会自动使对话过期,也不会与 Struts2 正确集成;
- Scope 插件缺乏适当的文档,最后一次构建是在 2007 年(实际上包括 Mark Menard 在定义他的 Conversation Scope Interceptor 时编写的一些想法,尽管它不使用相同的代码)。
Spring 的 WebFlow 插件目前似乎有点过于复杂,无法使用。我目前正在寻找可以在几个小时内实施的东西,但我不介意你是否可以根据需要提出一些可行的建议,即使它需要的时间比我现在想要花的时间多.
那么,经验丰富的 Struts2 开发人员,您有什么建议?我应该如何实现这个?