奢侈品的网站设计,广州网站开发公司排名,一站式推广平台,上海专业做网站公司电话分组检验
参数校验时#xff0c;我们希望不同的方法参数校验规则不同#xff0c;这时就需要分组校验。
public class Category {NotNull(groups Update.class)private Integer id;//主键IDNotEmptyprivate String categoryName;//分类名称// NotEmpty(groups {Add.class,…分组检验
参数校验时我们希望不同的方法参数校验规则不同这时就需要分组校验。
public class Category {NotNull(groups Update.class)private Integer id;//主键IDNotEmptyprivate String categoryName;//分类名称// NotEmpty(groups {Add.class, Update.class})NotEmptyprivate String categoryAlias;//分类别名private Integer createUser;//创建人IDJsonFormat(pattern yyyy-MM-dd MM:mm:ss)private LocalDateTime createTime;//创建时间JsonFormat(pattern yyyy-MM-dd MM:mm:ss)private LocalDateTime updateTime;//更新时间public interface Add extends Default {}public interface Update extends Default {}} PostMappingpublic Result add(RequestBody Validated(Category.Add.class) Category category) {categoryService.add(category);return Result.success();}PutMappingpublic Result update(RequestBody Validated(Category.Update.class) Category category) {categoryService.update(category);return Result.success();}自定义校验
package com.heo.anno;import com.heo.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;import java.lang.annotation.*;import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;Documented // 元注解 抽取 State 到帮助文档内
Constraint(validatedBy {StateValidation.class} // 指定校验规则的类
)
Target({FIELD}) // 元注解 表明注解使用的场合 FIELD 表示 使用在属性上
Retention(RUNTIME) // 元注解 注解在哪个阶段会被保留
public interface State {// 提供校验失败后的提示信息String message() default state参数的值只能是已发布或者草稿;// 指定分组Class?[] groups() default {};// 负载 注解的附加信息Class? extends Payload[] payload() default {};
}
package com.heo.validation;import com.heo.anno.State;
import jakarta.validation.Constraint;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;/*** 自定义接口的校验规则类* State 给哪个注解提供校验规则* String 校验的数据类型*/
public class StateValidation implements ConstraintValidatorState, String {/**** param s 将来要校验的数据* param constraintValidatorContext* return 返回 false 校验不通过true 则通过*/Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {// 提供校验规则if (s null) {return false;}if (s.equals(已发布) || s.equals(草稿)) {return true;}return false;}
}