hibernate的validate注解与@RequestParam注解搭配使用实现参数不为空的条件下才校验

       项目中一个接口有几个参数,其中有必填的也有可选的,要求使用hibernate的validate注解实现参数校验,必填参数好说,可选参数无法实现这两个校验:一是参数为空的条件下什么也不做;二是参数不为空的条件下,参数是否符合取值范围

       如果只使用validate注解,只能实现第二条,即一个@NotBlank注解,上面再加一个@Pattern注解或其他注解限制取值范围。对于第一条,因为当前参数是可选的,如果不传,@NotBlank注解直接就会抛出异常不满足条件,所以无法实现第一条,那么怎么办呢?

       @RequestParam注解粉墨登场了,这个注解里面有一个属性required=false,表示此参数非必填,并且可指定默认值。上面的问题,解决方法就是可选参数前面加一个@RequestParam注解,标明可选,然后紧接着跟一个validate注解,举个例子:

    @RequestMapping("/findById")
    public Result findUserById(@Valid SearchParamBO searchParamBO,

                               @Min(value = 1, message = "id不合法") 
                               @RequestParam(value = "id", 
                                   required = false) Long id,

                               @Pattern(regexp = "^(-1)$|^(0)$|^(1)$",
                                          message = "status不合法") 
                               @RequestParam(value = "status",
                                               required = false) String status

                                       ) {
      ......

   }

      别忘了在类名上加@Validated 注解哦

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值