本文基于struts2.1.8.1,默认开启了编程式的验证,由com.opensymphony.xwork2.validator.ValidationInterceptor拦截器的programmatic属性决定,默认值true。
1,validate拦截器会查找目标action方法的冠以'validate'和'validateDo'前缀的方法并执行,如请求foo()方法时,会查找public void validateFoo()或者public void validateDoFoo()来执行,只按照查找的先后顺序执行一个。因此,要针对特定方法做验证,可以使用此方案。
2,validate拦截器随后会查找执行Action中的public void validate()方法。也就是说,和请求的目标方法无关。这个行为也有一个开关,由alwaysInvokeValidate属性决定,默认值是true,开启。
如果1,2方法并存,会按照1-2的顺序执行。因此,实际使用中,使用1作为特定的验证处理,用2作为公共的验证处理。
1,validate拦截器会查找目标action方法的冠以'validate'和'validateDo'前缀的方法并执行,如请求foo()方法时,会查找public void validateFoo()或者public void validateDoFoo()来执行,只按照查找的先后顺序执行一个。因此,要针对特定方法做验证,可以使用此方案。
2,validate拦截器随后会查找执行Action中的public void validate()方法。也就是说,和请求的目标方法无关。这个行为也有一个开关,由alwaysInvokeValidate属性决定,默认值是true,开启。
如果1,2方法并存,会按照1-2的顺序执行。因此,实际使用中,使用1作为特定的验证处理,用2作为公共的验证处理。