我是一个struts 2新手,我遇到了一个看似结构性的问题。我假设我错过了一些明显的东西,但不确定是什么。
我有一个多页面表单,其中一些表单元素是动态生成的,数据是从数据库和/或会话预先填充的。流程如下:
- Action1 成功加载
Form1
- >Form1
发布到 Action2 - >- 行动2 成功加载
Form2
,但行动2 INPUT重新加载Form1
表单1元素是动态的,因此构建表单需要数据库和/或会话调用以及一些准备。 Action2并不确切知道表单元素运行时的内容。
我的问题是我似乎无法在Action2的验证方法中避免让所有Action1执行代码AGAIN。即,如果Action2验证失败,Action2需要重新运行所有代码以构建Form1。
如果我对INPUT结果执行redirectAction(返回Action1),则会丢失validate方法中的所有错误消息。
我试图找出一种方法来避免在我拥有的每个动态表单的两个不同位置放置所有设置代码。任何帮助将不胜感激。
答案 0 :(得分:0)
将问题归结为:
如何避免Action1和Action2
所需的重复代码
遵循DRY的主要方式是:
在单个Java文件中使用两个操作方法创建两个操作,并从每个Action方法内部(或之前)调用方法(自定义或prepare()
)。
使用方法(自定义或a BaseAction)创建prepare()
,并在每个扩展它的Action内(或之前)调用它。
返回an INPUT result时使用RedirectAction
结果,PRG pattern and MessageStore Interceptor保留邮件。
上面的链接是SO答案,对新用户可能比(通常是神秘的)文档更有帮助。