2017-08-04 3 views
0

Ich habe meine benutzerdefinierte validator und ich möchte einige Fehlermeldungen für sie hinzufügen. So habe ich nächsten Code:Ist es möglich, Nachricht Parameter für Constraint-Verletzung Vorlage Nachricht hinzuzufügen?

@Override 
public boolean isValid(final String label, 
         final ConstraintValidatorContext constraintValidatorContext) { 
    constraintValidatorContext.disableDefaultConstraintViolation(); 

    if(label.length() > MAX_LENGTH) { 
      constraintValidatorContext 
        .buildConstraintViolationWithTemplate("{error.maxLength}") 
        .addConstraintViolation(); 
      return false; 
    } 
    ... 
} 

Meine Botschaft wie error.maxLength=You have exceeded max length of {0} aussieht, so hat es Parameter maxLength.

Es ist möglich, es hinzuzufügen, wenn Constraint-Verletzung erstellt wird?

Antwort

3

Ja, Sie können.

Sie haben auszupacken die ConstraintValidatorContext auf ein HibernateConstraintValidatorContext mit:

HibernateConstraintValidatorContext hibernateConstraintValidatorContext = constraintValidatorContext.unwrap(HibernateConstraintValidatorContext.class); 

Dann können Sie entweder:

hibernateConstraintValidatorContext.addMessageParameter("name", value); 

(und Ihr sehen aus wie ein Nachrichtenparameter ({variable}), so ist es wahrscheinlich Was Sie verwenden müssen - beachten Sie, dass HV 5.4.1.Final für diese Methode benötigt wird.

oder

hibernateConstraintValidatorContext.addExpressionVariable("name", value); 

wenn es Ausdruck Variable ist

+0

Dank (so Expression Language und so etwas wie ${variable} verwenden), fand es bereits. –

Verwandte Themen