您的位置:首页 > 其它

hibernate validate 自定义对类的验证,可以同时验证几个字段的关联关系

2017-09-07 09:34 447 查看
最近开发接口,要求验证几个有关联的字段,但是在资料中,都是看到类似于@notnull,@notempty的注解,都是对单个字段,并不能满足我们平时开发的需求。

我们遇到的是,当选择某个字段时,另外一个字段不能为空,这样具有逻辑判断的验证,

1、在hibernate validation 中,提供了对类的注解。可以实现此需求

定义注解。

@Retention(RetentionPolicy.RUNTIME)

//element.type 注解用于类

@Target(ElementType.TYPE)

@Documented

@Constraint(validatedBy=BaseValAnno.class)

//@Repeatable(LinkVals.class)(可重复注解同一字段,或者类,java1.8后支持)

public @interface BaseVal {
String message() default "格式不正确";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};

}

2.对注解进行定义,继承 ConstraintValidator,接口,



3.自定义注解的使用。

/*

1、由于是对类的注解,所以存在的逻辑关系是先对属性验证,然后对类的逻辑关系验证,

2、@GroupSequence是对注解分组的排序,可以通脱他判断先后顺序

*/

@GroupSequence({first.class,second.class,third.class,fourth.class,BaseInfo.class})

@BaseVal(groups={fourth.class})

public class BaseInfo  {

//private int id;

@NotEmpty(message="年度不能为空",groups={first.class})

    private String niandu;

@NotEmpty(message="处罚主体不能为空",groups={first.class})

    private String areacode;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate validate