Sto cercando di fare una piccola convalida personalizzata con JSR-303 javax.validation
.
Ho un campo. E se un certo valore viene inserito in questo campo, voglio richiedere che alcuni altri campi non lo siano null
.
Sto cercando di capirlo. Non sono sicuro di come lo chiamerei per trovare una spiegazione.
Qualsiasi aiuto sarebbe apprezzato. Sono abbastanza nuovo in questo.
Al momento sto pensando a un vincolo personalizzato. Ma non sono sicuro di come testare il valore del campo dipendente dall'interno dell'annotazione. Fondamentalmente non sono sicuro di come accedere all'oggetto del pannello dall'annotazione.
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;
}
}
}
Mi sta panel.status.getValue();
dando problemi .. non sono sicuro di come ottenere questo risultato.
Object
). In questo caso, non è nemmeno necessario utilizzare la reflection per ottenere i valori, ma in questo caso il validatore diventa meno generico 2) utilizzareBeanWrapperImp
da Spring Framework (o altre librerie) e il suogetPropertyValue()
metodo. In questo caso sarai in grado di ottenere un valore asObject
e di eseguire il cast su qualsiasi tipo di cui hai bisogno.