Jer*_*emy 1 validation error-handling spring spring-mvc messages
我需要在控制器中以编程方式获取已解决的错误消息.typeMismatch错误的默认验证消息不会从我的messages.properties文件中填充.我有一个表单支持对象,其中一个字段是一个整数.如果我为该字段提交字符串,我会得到:
Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'establishedYear'; nested exception is java.lang.NumberFormatException: For input string: "1995a"
Run Code Online (Sandbox Code Playgroud)
作为ObjectError中的默认消息.这是我输出的控制器:
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody FormJSONResponse postForm(@Valid ProfileEditCompanyForm profileEditCompanyForm, BindingResult result) throws Exception {
if (result.hasErrors()) {
for (ObjectError objectError : result.getAllErrors()) {
System.out.println(objectError.getDefaultMessage()); // THIS IS NOT MY MESSAGE, BUT SHOULD BE
}
}
... other stuff ...
}
Run Code Online (Sandbox Code Playgroud)
所以我在WEB-INF/classes中添加了一个messages.properties,其中包含一些测试消息,看看是否可以覆盖该默认消息:
typeMismatch.profileEditCompanyForm.establishedYear=test 1
typeMismatch.establishedYear=test 2
typeMismatch.java.lang.Integer=test 3
typeMismatch=test 4
profileEditCompanyForm.establishedYear=test 5
establishedYear=test 6
Run Code Online (Sandbox Code Playgroud)
在我的app-servlet.xml文件中,我有:
<mvc:annotation-driven conversion-service="conversionService" validator="validator"/>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
为什么不从我的messages.properties文件中获取任何消息?
在Spring上下文中尝试这个:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="WEB-INF/classes/messages" />
</bean>
Run Code Online (Sandbox Code Playgroud)
然后在"WEB-INF/classes"文件夹中创建一个文件调用:"messages.properties"
请记下"messages.properties"的内容,你必须像这样提供它:
typeMismatch.pathValueInsideYourJSPform:input= Your Message
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助!
这里是一个样本也
| 归档时间: |
|
| 查看次数: |
7266 次 |
| 最近记录: |