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żyjBeanWrapperImpSpring Framework (lub innych bibliotek) i jegogetPropertyValue()metody. W takim przypadku będziesz mógł uzyskać wartość jakoObjecti rzutować na dowolny typ, którego potrzebujesz.