Comment ajouter des messages d'erreur personnalisés dans Hibernate validator

J'ai une classe simple comme ça,

import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

public class Form implements Serializable {
   @NotNull
   @Length(min = 2, max = 20)
   private String lastName;
}

J'ai des messages.fichier de propriétés dans le classpath. Il est alors chargé par Ressort bean comme suit,

<bean name="validator"
      class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="validationMessageSource">
        <ref bean="resourceBundleLocator"/>
    </property>
</bean>

<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>classpath*:messages.properties</value>
        </list>
    </property>
</bean>

Tout ce que je veux est d'obtenir des messages d'erreur personnalisés en fonction de la fève de validation. En d'autres termes je veux avoir chaque objet ConstraintViolation retourner le message d'erreur que j'ai définie dans mon fichier de propriété au lieu de celui par défaut. Est-il possible d'ajouter un message de la propriété avec une valeur comme ce format {xxx.aaaa.zzzz} et de renvoyer ce message dans les messages.fichier de propriétés ?

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set<ConstraintViolation<Form>> inputErrors = validator.validate(form); 

Si je veux personnaliser le message par défaut pour @NotNull et @Longueur, comment puis-je le faire?

Mon expérience sur Hibernate validation est zéro, Tout exemple de code ou guide étape par étape de serait appréciée.

OriginalL'auteur nash | 2011-08-17