0
我正在嘗試爲Spring項目編寫一些驗證註釋。依賴於其他變量的彈簧驗證
我有幾個可以爲空的字段,除非一個布爾值(在同一個對象中)爲真。
有一些簡單的方法是這樣的:
@NotNull(if xyz=true)
?由於
我正在嘗試爲Spring項目編寫一些驗證註釋。依賴於其他變量的彈簧驗證
我有幾個可以爲空的字段,除非一個布爾值(在同一個對象中)爲真。
有一些簡單的方法是這樣的:
@NotNull(if xyz=true)
?由於
我認爲這是不可能的註釋(太複雜)的事情,但是這是可以做到通過實施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");
}
}
}
不知道,但我想你不能通過註釋來做到這一點,而必須使用valodator。 –
你將不得不使用自定義約束和驗證器。 –
[JSR 303驗證的可能重複,如果一個字段等於「某事」,那麼這些其他字段不應該爲空](http://stackoverflow.com/questions/9284450/jsr-303-validation-if-one-field -equals-something-then-these-other-fields-sho) –