Chcę przeprowadzić małą niestandardową walidację z JSR-303 javax.validation
.
Mam pole. A jeśli w tym polu zostanie wprowadzona pewna wartość, chcę wymagać, aby kilka innych pól nie było null
.
Próbuję to rozgryźć. Nie jestem pewien, jak nazwałbym to, aby znaleźć wyjaśnienie.
Każda pomoc będzie mile widziana. Jestem w tym całkiem nowy.
W tej chwili myślę o niestandardowym ograniczeniu. Ale nie jestem pewien, jak przetestować wartość pola zależnego z poziomu adnotacji. Zasadniczo nie jestem pewien, jak uzyskać dostęp do obiektu panelu z adnotacji.
public class StatusValidator implements ConstraintValidator<NotNull, String> {
@Override
public void initialize(NotNull constraintAnnotation) {}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if ("Canceled".equals(panel.status.getValue())) {
if (value != null) {
return true;
}
} else {
return false;
}
}
}
To panel.status.getValue();
sprawia mi kłopoty… nie wiem, jak to osiągnąć.
Object
). W tym przypadku nie musisz nawet używać refleksji, aby uzyskać wartości, ale w tym przypadku walidator stanie się mniej ogólny 2) użyjBeanWrapperImp
Spring Framework (lub innych bibliotek) i jegogetPropertyValue()
metody. W takim przypadku będziesz mógł uzyskać wartość jakoObject
i rzutować na dowolny typ, którego potrzebujesz.