java - Struts2 动态表单流

标签 java inheritance struts2 dry post-redirect-get

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

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

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

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

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

如果我对 INPUT 结果执行重定向操作(返回到 Action1),我会丢失验证方法中的所有错误消息。

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

最佳答案

将问题归结为:

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

遵循 DRY 的主要方式有:

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

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

  3. 返回 an INPUT result 时使用 RedirectAction 结果,与 PRG pattern and MessageStore Interceptor保存消息。

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

关于java - Struts2 动态表单流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735806/

相关文章:

java - 如何在另一个/下一个 Activity 中显示微调器选择的值作为 android 中的微调器本身?

java - 在 Java 中的特定时间运行程序或方法

C++:在基类中使用带有泛型虚函数的异步回调

java - 在weblogic 10.3.6上部署struts2.5 war文件时无法加载Action类

java - Struts 2转义html不起作用?

java - 使用 Spring REST 更新一对多关系

java - 在 Android 中创建 ListPreferences

javascript - 在 JavaScript 中,如何访问父类(super class)实例的属性?

php - 对子类使用语句

java - 无法将隐藏项映射到 javabean struts2