首页 > 代码库 > jsr303,jsr 349自定义注解验证实现
jsr303,jsr 349自定义注解验证实现
以下为验证发布状态是否为以下字段
@Documented @Constraint(validatedBy = {PublishStatusValidator.class }) @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @NotBlank /** * Verify the status contains value * status default values {"pending","publish","invalid"}. */ public @interface PublishStatus { String[] status() default {"fabu1","fabu2","fabu3"}; String message() default "状态值不匹配,值必须是{status}中的值"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; /** * Defines several {@code @Length} annotations on the same element. */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented public @interface List { PublishStatus[] value(); } }
上面我们还加了@NotBank,表示不能为空,当然这里看自己业务需求了。
继承与ConstraintValidator实现验证
public class PublishStatusValidator implements ConstraintValidator<PublishStatus, CharSequence> { private CharSequence[] statusStr; @Override public void initialize(PublishStatus constraintAnnotation) { this.statusStr = constraintAnnotation.status(); } @Override public boolean isValid(CharSequence value, ConstraintValidatorContext context) { return Arrays.asList(statusStr).contains(value); } }
使用方法
@PublishStatus @PublishStatus(status = {"a","b","c"})
jsr303,jsr 349自定义注解验证实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。