使用@valid弹簧验证其中/如何自定义错误消息

jac*_*ack 3 validation spring hibernate-validator

我正在尝试使用属性文件中的错误消息进行一些弹簧验证.但是我发现的示例似乎都是硬编码的值,或者从属性文件中获取但是使用验证器类并在那里检索它.

我的设置有点不同.我在我的请求映射中使用@Valid注释,而我的@Valid类使用@NotNull等.我已经看到一些人们做@NotNull的例子(message ="blablabla"); 但这也是硬编码的,我想将这些消息放在一个属性文件中,这样我就可以轻松地编辑它,这样我就可以在将来轻松实现i18n.

关于如何实现这一点的任何意见将不胜感激.

axt*_*avt 8

它的工作方式与显式完全相同Validator- 您在文件中声明MessageSource并写入错误消息.properties.消息代码形成为constraintName.modelAttributeName.propertyName:

publib class Foo {
    @NotNull private String name;
    ...
}
Run Code Online (Sandbox Code Playgroud)

.

@RequestMapping
public String submitFoo(@Valid Foo foo, ...) { ... }
Run Code Online (Sandbox Code Playgroud)

messages.properties:

NotNull.foo.name=...
Run Code Online (Sandbox Code Playgroud)

MessageSource 宣言:

<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value = "messages" />
</bean>
Run Code Online (Sandbox Code Playgroud)