4 Stimmen

Java bean validation - Standardmeldung überschreiben

Wie kann ich verschiedene Nachrichten auf Klassenebene-Validatoren zurückgeben?

Schnittstelle

public @interface ValidFoo
{
    public String message() default "{package.ValidFoo.message}";
}

Implementierung

@Override
public boolean isValid(final Foo foo, final ConstraintValidatorContext context)
{
    // Überprüfen von Bedingung 1
    // --> Nachricht "package.ValidFoo.message_constraint1" zurückgeben

    // Überprüfen von Bedingung 2
    // --> Nachricht "package.ValidFoo.message_constraint2" zurückgeben
}

ValidationMessages.properties

package.ValidFoo.message=Validierungsfehler.
package.ValidFoo.message_constraint1=Validierungsfehler 1.
package.ValidFoo.message_constraint2=Validierungsfehler 2.

14voto

Hardy Punkte 18004

Sie müssen den ConstraintValidatorContext verwenden, um die richtige Nachrichtenvorlage auszuwählen. Ein Beispiel finden Sie in der Hibernate Validator-Dokumentation - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints-validator.

Tatsächlich machen Sie etwas Ähnliches:

    constraintContext.disableDefaultConstraintViolation();
    constraintContext.buildConstraintViolationWithTemplate(
            "{package.ValidFoo.message_constraint1}" 
    )
    .addConstraintViolation();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X