Je cherche à faire une petite validation personnalisée avec JSR-303 javax.validation
.
J'ai un champ. Et si une certaine valeur est entrée dans ce champ, je veux exiger que quelques autres champs ne le soient pas null
.
J'essaye de comprendre ça. Je ne sais pas exactement comment j'appellerais cela pour aider à trouver une explication.
Toute aide serait appréciée. Je suis assez nouveau dans ce domaine.
En ce moment, je pense à une contrainte personnalisée. Mais je ne sais pas comment tester la valeur du champ dépendant à partir de l'annotation. Fondamentalement, je ne sais pas comment accéder à l'objet panneau à partir de l'annotation.
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;
}
}
}
C'est le panel.status.getValue();
qui me donne des ennuis ... je ne sais pas comment y parvenir.
Object
). Dans ce cas, vous n'avez même pas besoin d'utiliser la réflexion pour obtenir les valeurs, mais dans ce cas, le validateur devient moins générique 2) utilisezBeanWrapperImp
Spring Framework (ou d'autres bibliothèques) et sagetPropertyValue()
méthode. Dans ce cas, vous serez en mesure d'obtenir une valeur en tant queObject
et de le convertir en n'importe quel type dont vous avez besoin.