使用@Valid验证的春季验证/如何自定义错误消息
-
28-09-2019 - |
题
我正在尝试使用属性文件中的错误消息进行一些弹簧验证。但是,我发现所有示例似乎都具有硬编码的值,或者从属性文件中获取,但是使用验证器类并在那里检索它。
我的设置有些不同。我正在我的requestMapping中使用@valid注释,而我的@Valid类则使用@notnull等。我已经看到了一些人在@notnull @notnull的示例(message =“ blablabla”);但这也是硬编码的,我想将消息放在属性文件中,以便我可以轻松地即时编辑它,因此我可以在将来轻松实现I18N。
关于如何实现这一目标的任何输入将不胜感激。
解决方案
它的工作方式与显式完全相同 Validator
- 你 声明 MessageSource
并在中写入错误消息 .properties
文件。消息代码形成为 constraintName.modelAttributeName.propertyName
:
publib class Foo {
@NotNull private String name;
...
}
.
@RequestMapping
public String submitFoo(@Valid Foo foo, ...) { ... }
messages.properties
:
NotNull.foo.name=...
MessageSource
宣言:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value = "messages" />
</bean>
不隶属于 StackOverflow