1.先看下面代码
/**
* 达到注册页面
* 跳过校验
*/
@SkipValidation
public String toRegPage(){
return "regPage" ;
}
public String doReg(){
model.setPassword(DataUtil.md5(model.getPassword()));
us.saveEntity(model);
return SUCCESS;
}
* 达到注册页面
* 跳过校验
*/
@SkipValidation
public String toRegPage(){
return "regPage" ;
}
public String doReg(){
model.setPassword(DataUtil.md5(model.getPassword()));
us.saveEntity(model);
return SUCCESS;
}
public void validate(){
//1.非空
if(!ValidateUtil.isValid(model.getEmail())){
this.addFieldError("email", "email是必填项");
}
if(!ValidateUtil.isValid(model.getPassword())){
this.addFieldError("password", "pass是必填项");
}
if(!ValidateUtil.isValid(model.getNickName())){
this.addFieldError("nickName", "nickname是必填项");
}
if(hasErrors()){
return ;
}
//密码一致性校验
if(!model.getPassword().equals(confirmPassword)){
addFieldError("password", "密码不一致");
return ;
}
//邮箱是否占用校验
boolean b = us.isRegisted(model.getEmail());
if(b){
addFieldError("email", "邮箱占用");
}
}
}
//1.非空
if(!ValidateUtil.isValid(model.getEmail())){
this.addFieldError("email", "email是必填项");
}
if(!ValidateUtil.isValid(model.getPassword())){
this.addFieldError("password", "pass是必填项");
}
if(!ValidateUtil.isValid(model.getNickName())){
this.addFieldError("nickName", "nickname是必填项");
}
if(hasErrors()){
return ;
}
//密码一致性校验
if(!model.getPassword().equals(confirmPassword)){
addFieldError("password", "密码不一致");
return ;
}
//邮箱是否占用校验
boolean b = us.isRegisted(model.getEmail());
if(b){
addFieldError("email", "邮箱占用");
}
}
}
也就是说在struts2中,如果在action中,有名为validate的方法,那么在执行其他所有方法前,都会先执行这个validate方法【不用调用即会执行】,除非你在方法前加了注解 @SkipValidation。
【上面validate方法中,只要有异常的,就addFieldError()了(action要继承ActionSupport),然后只需要判断是否hasErrors()即可知道验证是否通过】
2.如果我们只想在method1方法前验证,那么我们可以写一个方法,validateMethod1【M大写】
转载于:https://blog.51cto.com/yxmwater/1036142