5
我有一个简单的类像这样,如何添加自定义错误消息在Hibernate验证
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;
}
我在classpath messages.properties文件。它然后通过的Spring bean加载如下,
<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>
所有我想要的是让根据验证豆自定义错误消息。换句话说,我希望每个ConstraintViolation对象都返回我在属性文件中定义的错误消息,而不是默认的。是否可以使用像这种格式{xxx.yyyy.zzzz}的值添加消息属性并从messages.properties文件中引用该消息?
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Form>> inputErrors = validator.validate(form);
如果我想自定义@NotNull和@Length的默认消息,我该怎么做?
我Hibernate的验证的经验是零,任何样品代码或逐步指南将不胜感激。
呀弗里茨,这是真的,但我不希望因为我有很多@NotNull覆盖默认messageTemplate路径(和当然还有其他注释)在我的Form类中。我想为每个属性添加特定的错误消息。有没有实现自定义MessageInterpolator的简单方法**。我发现了几个自定义消息插值器实现,但我不明白其中的任何一个。如果你能给我一个完整的源代码最简单的解决方案!! – nash
并且还我试图每个验证注释的重要的信息的属性,像这样{vvvv.ssss.rrrt.message}的格式,但是当我称为ConstraintViolation的的getMessage它的印刷,因为它是,不是它的消息。 – nash
我明白了!我想到的唯一方法是创建一个自定义的验证器,它包含一条消息!像@MyNotNull +消息?! 或者你可以做这样的事情 ' ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); 汽车车=新车(null); 集> constraintViolations = validator.validate(汽车); assertEquals(1,constraintViolations.size()); assertEquals(“may not be null”,constraintViolations.iterator()。next()。getMessage()); ' 并拦截对象中的消息!? –
stereoscope