Ich möchte eine kleine benutzerdefinierte Validierung mit JSR-303 durchführen javax.validation
.
Ich habe ein Feld. Und wenn ein bestimmter Wert in dieses Feld eingegeben wird, möchte ich verlangen, dass einige andere Felder dies nicht tun null
.
Ich versuche das herauszufinden. Ich bin mir nicht sicher, wie ich das nennen würde, um eine Erklärung zu finden.
Jede Hilfe wäre dankbar. Ich bin ziemlich neu darin.
Im Moment denke ich an eine benutzerdefinierte Einschränkung. Ich bin mir jedoch nicht sicher, wie ich den Wert des abhängigen Felds innerhalb der Anmerkung testen soll. Grundsätzlich bin ich mir nicht sicher, wie ich über die Annotation auf das Panel-Objekt zugreifen soll.
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;
}
}
}
Es ist das, panel.status.getValue();
was mir Ärger macht. Ich bin mir nicht sicher, wie ich das erreichen soll.
Object
). In diesem Fall müssen Sie nicht einmal Reflection verwenden, um die Werte abzurufen. In diesem Fall wird der Validator jedoch weniger allgemein. 2) Verwenden SieBeanWrapperImp
Spring Framework (oder andere Bibliotheken) und seinegetPropertyValue()
Methode. In diesem Fall können Sie einen Wert als erhaltenObject
und in einen beliebigen Typ umwandeln.