栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JSR-303 Bean验证注释了多个字段

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSR-303 Bean验证注释了多个字段

要一次验证多个字段,请在类型级别上使用注释,并编写一个自定义的验证器,以使用REGEXP检查所有字符串字段。

编辑:提供示例。这很丑陋,因为它使用了Reflection并违反了安全性,但是也许它给了您一个总体思路。如果您不使用“对象”而是一个具体的类或接口,则使用常规的吸气剂可能会成功。

被测类(和跑步者)

   import javax.validation.Validation;import javax.validation.Validator;import validation.AllStringsRegex;@AllStringsRegex(value="l")public class UnderValidation {    String a;    String b;   public static void main(String... args) {       UnderValidation object = new UnderValidation();       object.a = "hello";       object.b = "world";       Validator validator = Validation.buildDefaultValidatorFactory().getValidator();       System.out.println(validator.validate(object));   }}

我的注释:

@Target( { TYPE, ANNOTATION_TYPE })@Retention(RUNTIME)@Constraint(validatedBy = AllStringsRegexValidator.class)@documentedpublic @interface AllStringsRegex {    String message() default "String not regex";    String value() default "";    Class<?>[] groups() default {};    Class<? extends Payload>[] payload() default {};}

我的验证器

public class AllStringsRegexValidator implements ConstraintValidator<AllStringsRegex, Object> {    private Pattern pattern = null;    @Override    public void initialize(AllStringsRegex annotation) {        pattern = Pattern.compile(annotation.value());    }    @Override    public boolean isValid(Object object, ConstraintValidatorContext ctx) {        for (Field f : object.getClass().getDeclaredFields()) { if (f.getType().equals(String.class)) {     try {         f.setAccessible(true);         String value = (String)f.get(object);         if (!pattern.matcher(value).find()) {  return false;         }     }     catch (Exception e) {         // TODO Auto-generated catch block         e.printStackTrace();     } }        }        return true;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号