Struts2 动态表单流

Struts2 Dynamic Form Flow

我是 struts 2 新手,我 运行 遇到了一个结构性问题。我假设我遗漏了一些明显的东西,但不确定是什么。

我有一个多页表单,其中一些表单元素是动态生成的,数据是从数据库和/或会话中预先填充的。流程是这样的:

  • Action1 SUCCESS loads Form1 ->
  • Form1 posts to Action2 ->
  • Action2 SUCCESS loads Form2, but Action2 INPUT reloads Form1

表单 1 元素是动态的,因此需要数据库和/或会话调用以及一些准备工作来构建表单。 Action2 在运行时并不确切知道表单元素是什么。

我的问题是我似乎无法避免让所有 Action1 在 Action2 的验证方法中再次执行代码。即,如果 Action2 验证失败,Action2 需要重新运行所有代码来构建 Form1。

如果我对 INPUT 结果执行 redirectAction(返回到 Action1),我将丢失来自验证方法的所有错误消息。

我正在尝试找出一种方法来避免将我所有的设置代码都放在两个不同的地方,以用于我拥有的每个动态表单。任何帮助将不胜感激。

将问题归结为:

how can I avoid duplicate code needed by both Action1 and Action2

关注DRY的主要方式有:

  1. 在单个 Java 文件中使用两个动作方法创建两个动作,并从每个动作内部(或之前)调用一个方法(自定义或 prepare())方法。

  2. 使用方法(自定义或 prepare())创建 a BaseAction 并在扩展它的每个 Action 中(或之前)调用它。

  3. 返回 an INPUT result, with 时使用 RedirectAction 结果以保留消息。

上面的链接是 SO 答案,可能比(通常是神秘的)文档对新用户更有帮助。