Spring验证依赖于其他变量

时间:2013-11-15 14:37:49

标签: spring hibernate

我正在尝试为Spring项目编写一些验证注释。

我有几个可以为空的字段,除非bool的值(在同一个对象中)为真。

是否有一些简单的方法可以执行以下操作:

@NotNull(if xyz=true)

?感谢

1 个答案:

答案 0 :(得分:0)

我认为不可能使用注释(太复杂),但通过实现org.springframework.validation.Validator接口可以很容易地完成:

public class MyClassValidator implements Validator {
    @Override
    public boolean supports(Class c) {
        return MyClass.class.equals(c);
    }

    @Override
    public void validate(Object object, Errors errors) {
        MyClass myClass = (MyClass) object;

        if (myClass.getA() == null) {
            errors.rejectValue("avalue", "avalue.empty", "'A' value cannot be empty");
        }
        else if (myClass.getA() == true && (myClass.getB() == null || myClass.getB() < 0)) {
            errors.rejectValue("bvalue", "bvalue.notvalid", "'B' value is not valid");
        }
    }
}