JSR-303校验官网摘录笔记

官网
https://www.ibm.com/developerworks/cn/java/j-lo-jsr303/index.html

//开启数据校验 @Validated

@Validated  //开启数据校验
Constraint	                     详细信息
@Null	                    被注释的元素必须为 null
@NotNull	                被注释的元素必须不为 null
@AssertTrue	                被注释的元素必须为 true
@AssertFalse	            被注释的元素必须为 false
@Min(value)	                被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)	                被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)	        被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)	        被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)	            被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)	被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past	                    被注释的元素必须是一个过去的日期
@Future	                    被注释的元素必须是一个将来的日期
@Pattern(value)	            被注释的元素必须符合指定的正则表达式

Hibernate Validator 附加的 constraint

@Email	                    被注释的元素必须是电子邮箱地址
@Length	                    被注释的字符串的大小必须在指定的范围内
@NotEmpty	                被注释的字符串的必须非空
@Range	                    被注释的元素必须在合适的范围内

一些使用方式

/**
 * 实体类
 */
@Validated
public class Test {
    private String userUid; 
    //用户名不为空,使用默认提示
    @NotNull
    private String userName;    
    
    //密码进行长度和格式的验证,个性化提示
    @Size(min=6, max=15,message="密码长度必须在 6 ~ 15 字符之间!")
    @Pattern(regexp="^[a-zA-Z0-9|_]+$",message="密码必须由字母、数字、下划线组成!")
    private String userPwd;
    
    //手机号码也用个性化提示,使用正则表达式进行匹配,非空时不验证
    @Pattern(regexp="^1(3|4|5|7|8)\\d{9}$",message="手机号码格式错误!")
    private String userMobile;
    
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date userBirthday;

在Controller上绑定验证

@RestController
public class ValidatorTestController {

    /**
     * 使用 @Validated 开启对象验证
     * @param test
     * @return
     */
    @PostMapping("/validator")
    public Object validatorObject(@Validated Test test, BindingResult br){
        Map<String,Object> errorMap = new HashMap<String,Object>();
        if(br.hasErrors()){
            //对错误集合进行遍历,有的话,直接放入map集合中
            br.getFieldErrors().forEach(p->{
                errorMap.put(p.getField(), p.getDefaultMessage());
            });
        }
        //返回错误信息
        return errorMap;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值