Ich versuche, eine benutzerdefinierte Beans-Validierung zu erstellen, aber aus irgendeinem Grund funktioniert es nicht. Kann mir jemand sagen, was das Problem ist?Die benutzerdefinierte Beans-Validierung funktioniert nicht
Meine Hauptklasse:
package validationtest;
import java.text.ParseException;
public class Main {
/**
* @param args the command line arguments
* @throws java.text.ParseException
* @throws java.lang.IllegalAccessException
*/
public static void main(String[] args) throws ParseException, IllegalArgumentException, IllegalAccessException {
Text msg = new Text();
System.out.println(msg.getMessage(""));
}
}
class Text {
public String getMessage(@NotEmpty(message = "Field message") String msg) {
return msg;
}
}
Meine Validierung Schnittstelle
package validationtest;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Documented
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NotEmptyImpl.class)
public @interface NotEmpty {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
}
Meine Validierung implementieren
package validationtest;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class NotEmptyImpl implements ConstraintValidator<NotEmpty, String> {
@Override
public void initialize(NotEmpty annotation) {
throw new RuntimeException("The field is not empty: " + annotation.message());
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value == null) {
return false;
}
return !"".equals(value);
}
}
Hinweis: Ich habe das Paket validation-api-1.1.0.Final .jar zum Klassenpfad.
Sie installierten nur die API? Nicht der Impl? (z. B. Hibernate Validator) – BalusC
Ich habe dem Klassenpfad alle Hibernate-Dateien hinzugefügt: hibernate-validator-5.2.4.Final –
Beachten Sie, dass Java-Anmerkungen nur "Markierungen" sind: Sie werden nicht automatisch "ausgeführt" oder verhalten sich. Ein Framework oder Tool muss die Annotation lesen und dann das entsprechende Verhalten ausführen. In diesem Fall denke ich, dass Sie ein wenig über Hibernate-Validatoren lesen müssen, um zu verstehen, wie Sie den Validator programmatisch ausführen. – DavidS