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 注解哦

 

你可能感兴趣的:(hibernate,spring-boot)