【发布时间】:2011-08-09 22:37:22
【问题描述】:
我正在使用 Spring 3.0.5-RELEASE,带有 JSR-303 样式验证和 Hibernate 验证器 4.1.0-Final。我的模型类看起来像这样:
public class Model {
@Max(value=10,message="give a lower value")
Integer n;
}
这在带有绑定的 spring mvc servlet 中作为请求参数传递。所以请求看起来像这样:
http://localhost:8080/path?n=10
我想要的是能够在出现类型不匹配异常时自定义错误消息,例如
http://localhost:8080/path?n=somestring
这会导致我想替换一条很长的默认消息。
我已经尝试了网络上描述的几乎所有配置,但似乎都不起作用。有人知道正确的配置是什么吗?
具体来说,我的 mvc-servlet.xml 中需要什么?我的 messages.properties 文件中需要什么? message.properties 文件是否有一个神奇的名称以便 hibernate-validator 找到它?
我在我的 mvc-servlet.xml 中使用了以下内容但没有成功:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" p:basename="messages" />
还有一个位于 src/main/resources(以及 src/main/webapp/WEB-INF)的 messages.properties 文件...
我已经尝试了 messages.properties 中的各种组合,即使只是简单地覆盖了@NotEmpty 消息,即使这对我不起作用。
【问题讨论】:
-
我也有这个问题。 “非常长的默认消息”类似于“Property myRequest.grossAmount 抛出异常;嵌套异常是 java.lang.IllegalArgumentException”
-
请参阅 stackoverflow.com/a/36344999/1030527 以获取甚至提供经过验证的字段名称的解决方案。
标签: spring-mvc hibernate-validator bean-validation