1.首先有一个Action类,如下:
public class RegAction extends ActionSupport {
private static final long serialVersionUID = 7198855508667163247L;
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String toReg() {
System.out.println("toReg");
return "toReg";
}
public String reg() {
System.out.println("reg");
return "reg";
}
public void validate() {
if(this.name == null || this.name.trim().length() == 0){
this.addFieldError("message", "必选项");
} super.validate();
}
}
如果这样写的话,validate方法会对以上的toReg() 和reg()都进行验证,
指定针对某个方法进行验证的方法有3中:
1. 在不进行校验的方法上加上注解 : @SkipValidation,这样这个方法就不会进行校验了
eg: 如下就不会对toReg方法进行验证
@SkipValidation
public String toReg() {
System.out.println("toReg");
return "toReg";
}
2. 把validate方法后面加上要验证的方法名字,注意验证的方法名字首字母要大写: validateReg ,或者validateDoReg,这样就只会对reg方法进行验证
eg: 如下只会对reg方法进行验证
public void validateReg() {
if(this.name == null || this.name.trim().length() == 0){
this.addFieldError("message", "必选项");
}
super.validate();
}
3. 在struts.xml文件中覆盖默认栈(defaultStack)中的validation中的excludeMethods属性,把不需要验证的方法写到<params></params>中,这样的话就不会对标签<params>中的方法进行验证了.
eg:<interceptor-ref name="defaultStack">
<param name="validation.excludeMethods">input,back,cancel,browse,toReg</param>
</interceptor-ref>