So erhalten Sie ConstraintValidatorContext?

Ich Schreibe code, der der explizite Aufruf von Bean-Validation (JSR-303) so etwas wie dieses:

public class Example {

    @DecimalMin(value = "0")
    private static final String ANNOTATED = "";

    public void isPossitiveNumber(String str){

        ValidatorFactory factory =
             Validation.buildDefaultValidatorFactory();

        ConstraintValidator<DecimalMin, String>
             validator = 
                  factory.getConstraintValidatorFactory().getInstance(
                          DecimalMinValidatorForString.class);


        validator.initialize(
                  ReflectionUtils.findField(getClass(), "ANNOTATED")
                         .getAnnotation(
                          DecimalMin.class));

        boolean isValid = validator.isValid(str, null);

        return isValid;


    }


}

Beachten Sie die Zeile boolean isValid = validator.isValid(str, null);
Ich null für ConstraintValidatorContext weil ich keine Möglichkeit gefunden, zu erhalten/bauen es. In diesem speziellen Fall, wenn diese in Ordnung, weil es keine Nutzung der ConstraintValidatorContext intern, aber es ist offensichtlich ein hack. Wie sollte ich ConstraintValidatorContext?

HINZUGEFÜGT

Wurde ich gebeten, use-cases. So, zum Beispiel, ich bin writting benutzerdefinierte validator-und ich möchte, um die Wiederverwendung von vorhandenen Validierungen. Oder ich bin writting Flugzeug Java-code als desribed oben und ich will die Wiederverwendung von vorhandenen Validierung.

  • Könntest du ein paar details zu Ihrem Anwendungsfall? Sie als Benutzer normalerweise die Interaktion mit der Bean Validierung über die javax.validation.Validator API, nicht durch das erstellen und aufrufen von constraint-Prüfungen mit der hand. ConstraintValidatorContext übergeben wird, indem der Motor zu Prüfungen während der Validierung, so dass Ihre Umsetzung ist in der Regel nicht für die Benutzer verfügbar gemacht.
  • Zum Beispiel, ich bin writting benutzerdefinierte validator-und ich möchte, um die Wiederverwendung von vorhandenen Validierungen. Oder ich bin writting Flugzeug Java-code als desribed oben und ich will die Wiederverwendung von vorhandenen Validierung. Ich will hinzufügen, diese Klarstellung zu meinem post.
InformationsquelleAutor alexsmail | 2013-03-14
Schreibe einen Kommentar