(资料图)
springboot参数校验注解校验简单数据类型在controller层需要对前端传来的参数进行校验
使用springboot自带的validation工具可以从后端对前端传来的数据进行校验
创建项目时引入I/O场景下的validation起步依赖使用maven创建项目时,引入起步依赖:使用方法:
org.springframework.boot spring-boot-starter-validation
添加注解@Validated
控制器开启参数校验功能在参数前添加校验标准的注解,判断参数注解 | 作用 |
---|---|
@NotNull | 判断包装类是否为null |
@NotBlank | 判断字符串是否为null或者是空串(去掉首位空格) |
@NotEmpety | 判断集合是否为空 |
@Length | 判断字符的长度(最大或最小) |
@Min | 判断数值最小值 |
@Max | 判断数值最大值 |
@Email | 判断邮箱是否合法 |
例如:
@RequestMapping("/t2") @ResponseBody public String t2(@NotBlank @Length(min = 1,max = 5) String username, @NotNull @Min(0) @Max(50) Integer age, @NotEmpty @RequestParam List address, @NotBlank @Email String email){ System.out.println(username); System.out.println(age); System.out.println(address); System.out.println(email); return "请求成功"; }
异常处理当抛出ConstraintViolationException
异常时,可以使用SpringMVC的异常处理器处理异常,也可以使用springboot的异常处理器。
校验对象类型参数springboot使用BasicErrorController来进行异常处理,当出现异常时,会跳转到
resources/templates/error.html
,只需要对error.html进行编辑就可以处理,当然后台还是会报异常的,如果需要详细的处理异常,那么就需要采用SpringMVC的异常处理器来处理了
校验对象类型参数,实际是判断传来对象的属性
在对象属性前添加校验标准在对象参数前添加注解使用方法:
@Validated
,并将异常信息封装到BindingResult对象中例如:
public class User { @NotBlank(message = "用户名不能为空") private String username; @NotNull(message = "id不能为空") private int id; @Override public String toString() { return "User{" + "username="" + username + "\"" + ", id=" + id + "}"; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getId() { return id; } public void setId(int id) { this.id = id; }}
@RequestMapping("/t3") @ResponseBody public String t3(@Validated User user, BindingResult result){ //判断是否有异常 if (result.hasErrors()){ List list = result.getAllErrors(); for (ObjectError err:list ) { FieldError fieldError = (FieldError) err; System.out.println(fieldError.getDefaultMessage()); } throw new RuntimeException("参数验证"); } System.out.println(user); return "请求成功"; }
注意:对对象参数进行校验时不需要给controller添加@Validated
注解,只需要给对象参数添加注解就可以,校验标准应该添加在对象的属性中
X 关闭
X 关闭