zoukankan      html  css  js  c++  java
  • Java Web 学习(6) —— Spring MVC 之校验器

    Spring MVC 之校验器

    数据验证

    一个典型的 Spring MVC 应用会同时应用到 formatters/converters 和 validators。
    在调用 controller 期间,将会有一个或多个 formatter,将字符串转化为 domain 对象的 field 值。格式化成功后,验证器就会介入,判断字段值是否为有效值或是否符合规则。
    ConverterFormatter作用于字段级。而验证器作用于对象级。

    JSR 303

    JSR(Java Specification Requests):Java 规范提案,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。

    JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是 Hibernate Validator,其他实现有 Apache BVal。

    Hibernate Validator

    属性 描述
    @AssertFalse boolean 值必须为 false
    @AssertTrue boolean 值必须为 true
    @CreditCardNumber String 符合信用卡规范(不检验有效性)
    @DecimalMax() BigDicimal,BigInteger,String,基本数值数据类型及包装器,小于等于指定小数
    @DecimalMin() BigDicimal,BigInteger,String,基本数值数据类型及包装器,大于等于指定小数
    @Digits(integer, fraction) integer 定义最大整数部分 fraction 定义最大小数部分
    @Email String 符合email地址
    @Future Date,Calendar,是未来的日期
    @Length(min, max) String 长度符合范围
    @Max() BigDicimal,BigInteger,String,基本数值数据类型及包装器,小于等于指定整数
    @Min() BigDicimal,BigInteger,String,基本数值数据类型及包装器,大于等于指定整数
    @NotBlank String非null且非空(忽略首尾空白字符)
    @NotEmpty String,Collection,Map,Array非null且非空
    @NotNull 不能为空
    @Null 必须为空
    @Past Date,Calendar,是过去的日期
    @Pattern(regex, flag) String 与正则表达式匹配
    @Range(min, max) BigDicimal,BigInteger,String,基本数值数据类型及包装器,在范围内
    @Size(min, max) String,Collection,Map,Array长度在范围内
    @ScriptAssert(lang, script, alias) 使用脚本验证
    @URL(protocal, host, port) String 为有效URL
    @Valid 递归校验

    实例

    @RequestMapping(value = "/valid")
    @ResponseBody
    public String userValidator (@Valid User user, Errors errors) {
        if (errors.hasErrors()) {
            return "error";
        } 
        return user.toString();
    }
    
    public class User {
        @NotNull
        @Size(min = 1)
        private String name;
    
        @NotNull
        @Range(min = 18, max = 150)
        private Integer age;
    
        // getters and setters
        // toString
    }
    
  • 相关阅读:
    一个很好用的linux下系统清理工具
    怎样将linux+qt在1S中内启动的幻灯片教程
    通过 ulimit 改善系统性能
    UBI文件系统
    利用BLCR加快Android的启动过程
    工作队列中的sleep导致控制台无法输入问题
    android system setup and building (3)
    物理地址和虚拟地址1 (MMU)
    对 makefile 中 eval 函数的学习体会
    location.href语句与火狐不兼容的问题
  • 原文地址:https://www.cnblogs.com/JL916/p/11892479.html
Copyright © 2011-2022 走看看