SpringMVC数据校验

SpringMVC使用数据校验,JavaBean中属性类型必须为String
//验证数据类型为Email类型,也可以自定义Email格式@Email(regexp=正则表达式,message=验证错误返回的提示)
@Email
private String email;
//自定义验证格式,最常用的模式
@Pattern(regexp="1|2|3|4|5",message="存款年限为1-5年")
private String duration;


//界面对校验做出反应
public class DepositController {
    @RequestMapping("deposit")
    public String deposit(@Valid DepositBean depositBean,BindingResult bindingResult,ModelMap map) {//获取数据检验结果@Valid必须放在最前面,BindingResult bindingResult必须紧接着数据检验的类的参数
        //判断数据校验结果
        if(bindingResult.hasErrors()) {
            //打印数据校验失败结果
            System.out.println("数据校验失败数量:"+bindingResult.getErrorCount());
            List fieldErrors = bindingResult.getFieldErrors();
            for (FieldError err : fieldErrors) {
                System.out.println(err.getField());
                System.out.println(err.getDefaultMessage());
                //将错误信息以键值对形式保存到ModelMap中,发送到界面
                map.addAttribute(err.getField(), err.getDefaultMessage());
            }
            return "Deposit";
        }
        return "DepositSuccess";
    }
}

//自定义验证注解
@PhoneNo
private String phone;

创建一个SpringMVC注解的接口:PhoneNo
@Target({METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy= {PhoneNoValidator.class})
public @interface PhoneNo {
    String message() default "手机号码格式错误";
    Class[] groups() default{};
    Class[] payload() default {};
    @Target({FIELD,METHOD,PARAMETER,ANNOTATION_TYPE})
    @Retention(RUNTIME)
    @Documented
    @interface List{
        PhoneNo[] value();
    }
}

//创建一个类实现ConstraintValidator
public class PhoneNoValidator implements ConstraintValidator {
    @Override
    public void initialize(PhoneNo arg0) {

    }

    @Override        // 参数phoneNo为需要校验的数据
    public boolean isValid(String phoneNo, ConstraintValidatorContext context) {
        if (phoneNo==null||phoneNo.isEmpty()) {
            return false;
        }
                //正则表达式
        if (phoneNo.matches("((\\+86)|(86))?1[3|4|5|7|8|9]\\d{9}")) {
            return true;
        }
        return false;
    }
}

你可能感兴趣的:(SpringMVC)