1

如果我理解,Struts 2 拦截器堆栈正确,工作流拦截器会查看验证拦截器是否报告了任何验证失败。如果发现有验证失败,则返回(默认)Action.INPUT

如果是这种情况,如果正在执行的 Action 没有INPUT在其struts.xml配置中定义结果会发生什么?

4

3 回答 3

0

如果它返回 INPUT,并且没有为此定义结果(也没有一般结果),你会得到一个错误页面,上面写着类似

 No result defined for type INPUT and action <action name>.

您可以定义一个始终显示“INPUT”的通用页面,但更好的解决方案是如果您有一个 validate() 方法,通常最好定义一个 INPUT 结果返回。即使您没有明确地进行任何验证,将非整数值传递给整数字段之类的事情也会导致该结果,因此定义它是一个好主意。

于 2013-05-22T12:00:43.303 回答
0

您可以使用ValidationWorkflowAware接口来定义每个操作的结果名称

或者

您可以使用InputConfig注释以编程方式更改每个操作的结果名称

或者

随着即将发布的 Struts 版本 2.3.15 的新版本,它也可以使用ValidationErrorAware界面,可以通知有关错误的操作并可以更改返回的结果名称:https ://issues.apache.org/jira/browse/WW-4071

于 2013-05-23T07:35:53.493 回答
0

INPUT结果默认使用,您始终可以通过将参数设置为拦截器来覆盖它inputResultName

<interceptor-ref name="workflow">
   <param name="inputResultName">error</param>
</interceptor-ref>

进一步澄清和引用workflow拦截器

在上面的示例中,操作没有INPUT结果,如果发现操作错误或字段错误,则结果ERROR将返回。

于 2013-05-22T12:08:56.757 回答