顺序始终为一,即硬编码顺序。
验证过程由ValidationInterceptor
类执行(至少版本 2.3.8)。
此拦截器通过标准验证框架运行该操作,该框架反过来根据任何验证规则(在 ActionClass-validation.xml 等文件中找到)检查该操作并添加字段级和操作级错误消息(前提是该操作实现验证意识)。此拦截器通常是堆栈中应用的最后一个(或倒数第二个)拦截器之一,因为它假定所有值都已在操作上设置。
如果在 excludeMethods 参数中指定了被调用方法的名称,则此拦截器不执行任何操作。excludeMethods 接受以逗号分隔的方法名称列表。例如,如果您将 excludeMethods 参数设置为“input, back”,则此拦截器将跳过对 foo!input.action 和 foo!back.action 的请求。
动作请求的工作流不会因为这个拦截器而改变。相反,此拦截器通常与工作流拦截器结合使用。
注意:由于此方法从 MethodFilterInterceptor 扩展而来,因此它能够决定它是否仅适用于操作类中的选择性方法。有关详细信息,请参阅 MethodFilterInterceptor。
首先,它检查是否启用了声明式验证并执行此操作,然后检查是否启用了编程验证并执行此操作。
您可以通过拦截器参数打开/关闭每种类型的验证。
拦截器参数:
- alwaysInvokeValidate - 默认为 true。如果为真 validate() 方法将始终被调用,否则不会。
- 程序化 - 默认为 true。如果为 true 并且操作是 Validateable,则调用 validate() 以及任何以“validate”开头的方法。
- 声明性 - 默认为 true。基于 xml 或注释执行验证。