【发布时间】:2012-06-23 02:32:28
【问题描述】:
在我的表单支持对象的 Spring 验证期间,我无法在 messages.properties 中获取我的消息。
app-config.xml:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>
WEB-INF/classes/messages.properties:
NotEmpty=This field should not be empty.
表单支持对象:
...
@NotEmpty
@Size(min=6, max=25)
private String password;
...
当我遍历 BindingResult 中的所有错误并输出 ObjectError 的 toString 时,我得到了这个:
Field error in object 'settingsForm' on field 'password': rejected value []; codes [NotEmpty.settingsForm.password,NotEmpty.password,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [settingsForm.password,password]; arguments []; default message [password]]; default message [may not be empty]
如您所见,默认消息是“可能不为空”,而不是我的消息“此字段不应为空”。
如果我将 messageSource 注入控制器并输出以下内容,我确实会收到正确的消息: messageSource.getMessage("NotEmpty", new Object [] {"password"}, "默认空消息", null);
那么为什么不使用我的messages.properties 进行验证?我正在运行 Spring 3.1.1。谢谢!
【问题讨论】:
-
“Spring Validation”只是一些接口。您是否将 javax.validation 与 Hibernate Validator 一起使用?
-
我使用
@Valid(javax.validation.Valid) 并且在我的表单支持对象中我使用@NotEmpty(org.hibernate.validator.constraints.NotEmpty) 之类的验证。是这个意思吗?
标签: java spring hibernate validation spring-mvc