Struts 2的工作流拦截和行为不具有的输入结果(Struts 2 WorkFlow Interc

2019-10-29 05:30发布

如果我的理解,Struts2的拦截器栈正确,工作流拦截器查看是否任何验证失败已被验证拦截报道。 如果发现有验证失败,它返回(默认) Action.INPUT

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

Answer 1:

如果返回INPUT,并没有该定义的任何结果(没有普遍的结果),你会得到一个错误页面说像

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

您可以定义将始终对“INPUT”一般的网页,但更好的解决办法是,如果你有一个validate()方法,它通常是一个好主意,定义的输入结果回去。 即使你没有明确做任何验证,像一个非整数值被传递到一个整数字段可能会导致的结果,所以这是一个好主意来定义它。



Answer 2:

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

要么

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

要么

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



Answer 3:

INPUT结果默认使用,你总是可以通过设置参数来拦截覆盖它inputResultName

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

进一步澄清和参考工作流拦截 。

在操作上面的例子中没有一个INPUT的结果,如果找到了,然后采取行动的错误或CRC错误导致ERROR将返回。



文章来源: Struts 2 WorkFlow Interceptor and actions that do not have an INPUT result