解决get请求入参@NotNull验证不生效问题
目录
- get请求@NotNull验证不生效
- 解决办法
- 使用@NotEmpty,@NotBlank,@NotNull及@Valid注解校验请求参数
- 这里列举一下常用的注解
- 当校验不同过时,会返回对应的message描述
- CreateUserRequest 实体类并添加校验注解
get请求@NotNull验证不生效
解决办法
在该方法的controller类上加@Validated
验证信息生效了
使用@NotEmpty,@NotBlank,@NotNull及@Valid注解校验请求参数
@NotEmpty,@NotBlank,@NotNull 这些注解所在的jar包路径在javax.validation.constraints 的包下面,这个包下面也封装了其他的注解
这里列举一下常用的注解
并做简单介绍,其余还要在使用的时候慢慢挖掘
//被注释的元素必须为null @Null //被注释的元素不能为null @NotNull //被注释的元素必须为true @AssertTrue //被注释的元素必须为false @AssertFalse //被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Min(value) //被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @Max(value) //被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @DecimalMin(value) //被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMax(value) //被注释的元素的大小必须在指定的范围内。 @Size(max,min) //被注释的元素必须是一个数字,其值必须在可接受的范围内 @Digits(integer,fraction) //被注释的元素必须是一个过去的日期 @Past //被注释的元素必须是一个将来的日期 @Future //被注释的元素必须符合指定的正则表达式。 @Pattern(value) //被注释的元素必须是电子邮件地址 @Email //被注释的字符串的大小必须在指定的范围内 @Length //被注释的字符串必须非空 @NotEmpty //被注释的元素必须在合适的范围内 @Range
这些注解用于加在java的实体类属性字段上,在进行请求或请求的时候会根据字段的注解进行对应的校验,简化校验相关的代码。
当校验不同过时,会返回对应的message描述
在前端请求解析到 controller 的时候,可使用 @valid 注解,开启校验,以下为使用的示例:
@PostMapping("/get/user/course") public UserCourseInfo getUserCourseInfo(@Valid @RequestBody CreateUserRequest request) { return userService.getUserCourseInfo(request); }
CreateUserRequest 实体类并添加校验注解
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.lang.StringUtils; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** * <h1>创建用户请求对象定义</h1> * Created by Qinyi. */ @Data @NoArgsConstructor @AllArgsConstructor public class CreateUserRequest { /** 用户名 */ @NotNull(message = "不可为空") @Length(min=20,max=30,message = "长度在20到30") private String username; /** 邮箱 */ @Email @NotBlank private String email; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)