Struts 2 WorkFlow拦截器和没有INPUT结果的操作

时间:2013-05-22 11:53:11

标签: java struts2 workflow struts2-interceptors

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

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

3 个答案:

答案 0 :(得分:0)

如果它返回INPUT,并且没有为此定义结果(并且没有一般结果),您将得到一个类似

的错误页面
 No result defined for type INPUT and action <action name>.

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

答案 1 :(得分:0)

默认情况下使用

INPUT结果,您可以通过将参数设置为拦截器inputResultName来覆盖它。

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

进一步澄清和提及workflow interceptor

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

答案 2 :(得分:0)

您可以使用ValidationWorkflowAware界面定义每个操作的结果名称

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

随着即将推出的Struts版本2.3.15的新版本,也可以使用ValidationErrorAware接口,可以通知操作有关错误的信息,并且可以更改返回的结果名称:https://issues.apache.org/jira/browse/WW-4071