如果我的理解,Struts2的拦截器栈正确,工作流拦截器查看是否任何验证失败已被验证拦截报道。 如果发现有已验证失败,它返回(默认) Action.INPUT
如果是这种情况下,如果正在执行的行动没有一个会发生什么INPUT
在其定义的结果struts.xml
配置?
如果我的理解,Struts2的拦截器栈正确,工作流拦截器查看是否任何验证失败已被验证拦截报道。 如果发现有已验证失败,它返回(默认) Action.INPUT
如果是这种情况下,如果正在执行的行动没有一个会发生什么INPUT
在其定义的结果struts.xml
配置?
如果返回INPUT,并没有该定义的任何结果(没有普遍的结果),你会得到一个错误页面说像
No result defined for type INPUT and action <action name>.
您可以定义将始终对“INPUT”一般的网页,但更好的解决办法是,如果你有一个validate()方法,它通常是一个好主意,定义的输入结果回去。 即使你没有明确做任何验证,像一个非整数值被传递到一个整数字段可能会导致的结果,所以这是一个好主意来定义它。
您可以使用ValidationWorkflowAware
接口来定义每个动作结果名称
要么
您可以使用InputConfig
注释以编程方式改变每个动作的结果名
要么
随着版本的Struts 2.3.15即将到来的新版本将是也可以使用ValidationErrorAware
界面,操作可以通知有关错误和可以改变返回的结果名称: https://issues.apache.org/jira/browse/WW-4071
INPUT
结果默认使用,你总是可以通过设置参数来拦截覆盖它inputResultName
。
<interceptor-ref name="workflow">
<param name="inputResultName">error</param>
</interceptor-ref>
进一步澄清和参考工作流拦截 。
在操作上面的例子中没有一个INPUT
的结果,如果找到了,然后采取行动的错误或CRC错误导致ERROR
将返回。