java validation 校验枚举 文心快码BaiduComate 在Java中,校验枚举(Enum)通常涉及到确保传递给方法或构造函数的枚举值是枚举类型中定义的有效值之一。Java枚举本身提供了一种类型安全的方式来表示一组常量,因此使用枚举已经内置了一定的校验机制。不过,我们有时还需要进行额外的校验,比如在特定的业务逻辑中验证枚举值是否...
java validation内没有对枚举的校验工具,但是离散的枚举值校验确实是有必要的,这里列两种枚举的校验方法,实际大同小异。 前提知识 首先,javax.validation包是提供了方便的自定义校验的入口的,就是javax.validation.ConstraintValidator具体使用见下方。 1. 对离散值(非枚举)的校验 若离散的值尚未形成枚举,这种校验反而好...
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内 @Length(min=, max=) 验证字符串长度是否在给定的范围之内 max和min是对你填的“数字”是否大于或小于指定值,这个“数字”可以是number或者string类型。长度限制用length <dependency> <groupId>javax.validation</groupId> <ar...
首先,我们需要定义一个枚举类型,然后使用注解来校验枚举值的有效性。在实际应用中,我们可能会使用第三方库,比如Hibernate Validator或者Spring的Validation框架来实现这一功能。 首先,我们定义一个枚举类型,例如: java. public enum Status {。 ACTIVE, INACTIVE, PENDING. }。 接下来,我们可以使用注解来校验枚举值的...
java入参校验——枚举类型 一般来讲,对一些post请求,我们可以使用@valid+javax.validation.constraints包下注解的方式,优雅把参数验证放在control层的requst中,举例说明如下图: 但是此时,如果我们知道可以修改的状态只能为枚举类中存在的值,并没有已有的注解可以用,我们可以采用以下代码来实现此功能:...
import java.lang.reflect.Method;/*** 自定义枚举类校验器** @ClassName EnumValidator.java* @Description Controller入参对象中属性枚举项校验*/public class EnumValidator implements ConstraintValidator<EnumValidation, Object> {private EnumValidation annotation;/*** 初始化校验器* * 保证在使用此实例进行任何验...
校验器会通过内省(反射)获取到该枚举对象属性字段的值的集合。并进行缓存。判断请求参数是否在在该集合中。 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.an...
如果只满足第二个条件,那么不会对任何元素进行校验。这是因为@SpelValid注解是基于javax.validation....
方案三:使用字符串类型接收code值,并自定义注解器进行校验 使用字符串类型接收code值后,可以自定义validation注解对枚举类进行校验,但使用此方法返回时需要额外将code值转化为需要的枚举字段。由于开发时间有限(以及出于不重复造轮子的考量),最终选择了此方案作为最终的解决方式,在实际开发过程中,将code值转换为...