From 590acc7d3fab3daa3aab7e2f8ee39daf68c0bc41 Mon Sep 17 00:00:00 2001 From: lbw Date: Tue, 27 Jul 2021 18:49:25 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20Writing=20docs.=20closed=20#I40ZHQ?= =?UTF-8?q?=E3=80=90=E6=96=87=E6=A1=A3=E9=9C=80=E6=B1=82=E3=80=91=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C=20=EF=BC=8C=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E4=BD=BF=E7=94=A8=E6=96=87=E6=A1=A3=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=20=E7=BD=AE=E9=A1=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/validation.md | 253 ---------------------------------------------- 1 file changed, 253 deletions(-) delete mode 100644 doc/validation.md diff --git a/doc/validation.md b/doc/validation.md deleted file mode 100644 index 52e2dd95..00000000 --- a/doc/validation.md +++ /dev/null @@ -1,253 +0,0 @@ -###1.后端如何使用注解优雅的进行参数校验 -####1.1 常用注解 - - @Null(message = "XXXX不能为空") 被注释的元素必须为 null, message尽量要写不然前端不知道是哪个字段 - - @NotNull(message = "XXXX不能为空") 被注释的元素必须不为 null, message尽量要写不然前端不知道是哪个字段 - - @Length 被注释的字符串的大小必须在指定的范围内,注意只能用在String上 否则会报错, message尽量要写不然前端不知道是哪个字段 - - @NotEmpty 被注释的字符串的必须非空,注意只能用在String上 否则会报错, message尽量要写不然前端不知道是哪个字段 - - @AssertTrue(message = "XXXX") 被注释的元素必须为 true, message尽量要写不然前端不知道是哪个字段 - - @AssertFalse 被注释的元素必须为 false - - @Min(value=L,message="XXXX") 被注释的元素必须是一个数字,其值必须大于等于指定的最小值, message尽量要写不然前端不知道是哪个字段 - - @Max(value=L,message="XXXX") 被注释的元素必须是一个数字,其值必须小于等于指定的最小值, message尽量要写不然前端不知道是哪个字段 - - @DecimalMin(value=L,message="XXXX") 被注释的元素必须是一个数字,其值必须大于等于指定的最小值, message尽量要写不然前端不知道是哪个字段 - - @DecimalMax(value=L,message="XXXX") 被注释的元素必须是一个数字,其值必须小于等于指定的最大值, message尽量要写不然前端不知道是哪个字段 - - @Size(max, min) 被注释的元素的大小必须在指定的范围内, message尽量要写不然前端不知道是哪个字段 - - @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内, message尽量要写不然前端不知道是哪个字段 - - @Past 被注释的元素必须是一个过去的日期, message尽量要写不然前端不知道是哪个字段 - - @Future 被注释的元素必须是一个将来的日期, message尽量要写不然前端不知道是哪个字段 - - @Pattern(value) 被注释的元素必须符合指定的正则表达式, message尽量要写不然前端不知道是哪个字段 - - @Email 被注释的元素必须是电子邮箱地址, message尽量要写不然前端不知道是哪个字段 - - @Range 被注释的元素必须在合适的范围内, message尽量要写不然前端不知道是哪个字段 - - @NotBlank 验证字符串非null,且长度必须大于0,注意只能用在String上 否则会报错 - -然后需要在controller方法体添加@Validated 或 @Valid 不加校验会不起作用 -![输入图片说明](https://images.gitee.com/uploads/images/2021/0716/165424_ce989231_2351834.png "屏幕截图.png") -####1.2 例子 -![输入图片说明](https://images.gitee.com/uploads/images/2021/0716/165100_f3ce1dee_2351834.png "屏幕截图.png") -####1.3 如何扩展(如何自定义校验注解) -(1)定义注解,必须包含message、groups、Payload三个属性 -```java -/** - * 边界值校验 - * @author Lilu - * @date 2021-7-16 16:57 - */ - -import javax.validation.Constraint; -import javax.validation.Payload; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.*; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) -@Retention(RUNTIME) -@Documented -@Constraint(validatedBy = { IntegerValidImpl.class}) -public @interface IntegerValid { - - int max();//最大值 - - int min();//最小值 - - String message() default "{你不对劲}"; - - Class[] groups() default { }; - - Class[] payload() default { }; - -} -``` -(1)实现接口 -```java -import org.springframework.stereotype.Component; - -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; - -/** - * @author Lilu - * @date 2021-7-16 16:57 - */ -/** - * 自定义类,用于对校验注解规则的实现 - * 实现 ConstraintValidator 接口,泛型,第一个是对什么注解进行实现,第二个是检验的数据的数据类型 ; - */ -@Component -public class IntegerValidImpl implements ConstraintValidator { - - private int min; - private int max; - - /** - * @Description 初始化 - * @Date 2021-7-16 17:09 - * @Param [constraintAnnotation] - * @return void - **/ - @Override - public void initialize(IntegerValid constraintAnnotation) { - min=constraintAnnotation.min(); - max=constraintAnnotation.max(); - } - - @Override - public boolean isValid(Integer value, ConstraintValidatorContext context) { - System.out.println(value); - if(value>min&&value