我是一个 struts 2 新手,我遇到了一个似乎是结构性的问题。我假设我遗漏了一些明显的东西,但不确定是什么。
我有一个多页表单,其中一些表单元素是动态生成的,数据是从数据库和/或 session 中预先填充的。流程如下:
- Action1 SUCCESS loads
Form1
->Form1
posts to Action2 ->- Action2 SUCCESS loads
Form2
, but Action2 INPUT reloadsForm1
表单 1 元素是动态的,因此需要数据库和/或 session 调用以及一些准备工作来构建表单。 Action2 并不确切知道它运行时的表单元素是什么。
我的问题是,我似乎无法避免所有 Action1 在 Action2 的验证方法中再次执行代码。即,如果 Action2 验证失败,Action2 需要重新运行所有代码来构建 Form1。
如果我对 INPUT 结果执行重定向操作(返回到 Action1),我会丢失验证方法中的所有错误消息。
我正在尝试找出一种方法来避免将我的所有设置代码放在每个动态表单的两个不同位置。任何帮助将不胜感激。
最佳答案
将问题归结为:
how can I avoid duplicate code needed by both Action1 and Action2
遵循 DRY 的主要方式有:
在单个 Java 文件中创建具有两个操作方法的操作,并从每个操作方法内部(或之前)调用一个方法(自定义或
prepare()
)。创建a BaseAction使用方法(自定义或
prepare()
)并从扩展它的每个 Action 内部(或之前)调用它。返回 an INPUT result 时使用
RedirectAction
结果,与 PRG pattern and MessageStore Interceptor保存消息。
上面的链接是这样的答案,对新用户来说可能比(通常是神秘的)文档更有帮助。
关于java - Struts2 动态表单流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735806/