赞
踩
在接口入参为实体时,实体的有些属性是必传的,不能为空,如何在controller层校验,对非法入参进行拦截呢?
使用validation包中的注解在实体中进行配置。
import javax.validation.constraints.*;
以key、value不能为空举例。
在不能为空的属性上增加@NotNull注解
- import lombok.Builder;
- import lombok.Data;
-
- import javax.validation.constraints.NotNull;
- import java.io.Serializable;
-
- @Data
- @Builder
- public class ValidationDemo implements Serializable {
- private static final long serialVersionUID = 4673931777866766314L;
-
- private Integer id;
-
- @NotNull
- private String key;
-
- @NotNull
- private String value;
- }

在需要进行合法性校验的接口入参上增加注解@Validated
- public int insertSelective(@Validated @RequestBody ValidationDemo validationDemo) {
- ...
- }
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) | 被注释的元素必须符合指定的正则表达式 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。