Estou procurando fazer uma pequena validação personalizada com JSR-303 javax.validation
.
Eu tenho um campo. E se um determinado valor for inserido neste campo, quero exigir que alguns outros campos não sejam null
.
Estou tentando descobrir isso. Não sei exatamente como chamaria isso para ajudar a encontrar uma explicação.
Qualquer ajuda seria apreciada. Eu sou muito novo nisso.
No momento, estou pensando em uma restrição personalizada. Mas não tenho certeza de como testar o valor do campo dependente de dentro da anotação. Basicamente, não tenho certeza de como acessar o objeto de painel a partir da anotação.
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;
}
}
}
É o panel.status.getValue();
que está me causando problemas ... não tenho certeza de como fazer isso.
Object
). Neste caso, você nem precisa usar reflexão para obter os valores, mas neste caso o validador se torna menos genérico 2) usoBeanWrapperImp
do Spring Framework (ou outras bibliotecas) e seugetPropertyValue()
método. Nesse caso, você poderá obter um valor comoObject
e convertê-lo em qualquer tipo de que precisar.