使用 @valid 进行 spring 验证 where/how 自定义错误消息

标签 spring validation hibernate-validator

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

我的设置有点不同。 我在请求映射中使用 @Valid 注释,并且我的 @Valid 类使用 @NotNull 等。 我见过一些例子,人们这样做 @NotNull(message = "blablabla"); 但这也是硬编码的,我想将消息放入属性文件中,以便我可以轻松地即时编辑它,以便将来可以轻松地实现 i18n。

任何有关如何实现这一目标的意见将不胜感激。

最佳答案

它的工作方式与显式验证器完全相同 - 你declare a 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>

关于使用 @valid 进行 spring 验证 where/how 自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5118086/

相关文章:

java - Spring jdbcTemplate : generic code to run a select query with model name provided

php - 无法访问 View 中的验证错误

java - Spring Validator - 使用 <form :errors 显示错误

java - 如何在 Spring 中将错误消息从 bean 传递到表单

java - 使用 GroupSequence 验证嵌套 bean 并一次应用每个组

spring - Intellij 问题解决对 spring kotlin 的依赖

java - 500 Internal Server Error 而不是 Spring Boot 中的 404

spring - 为什么 beans 会被拒绝以及未识别出 URL 路径意味着什么?

javascript - Jquery到服务器问题

hibernate - 扩展@NotEmpty 以接受其他类