new*_*all 5 forms model-view-controller spring-3
Spring 3.0 MVC
首先,我没有找到任何关于messages.properties @ springsource的文档. 我发现有关覆盖错误消息的所有内容都在各种论坛上.如果有人提到了messages.properties的记录,那就太棒了.也许messages.properties不是来自spring而是java规范?
我已经尝试遵循关于绑定之前的JSR-303类型检查的建议 我的目标是用我自己的用户友好错误消息替换一些类型不匹配错误消息
我的情况如下:
模型
public class Test {
private int numberbomb;
public int getNumberbomb() {
return numberbomb;
}
public void setNumberbomb(int numberbomb) {
this.numberbomb = numberbomb;
}
}
Run Code Online (Sandbox Code Playgroud)
myservlet.xml
<mvc:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)
JSP
<form:form id="test" method="post" modelAttribute="test">
<form:errors path="*"/>
<form:label path="numberbomb">numberbomb</form:label>
<form:input path="numberbomb"/>
</form:form>
Run Code Online (Sandbox Code Playgroud)
类\ messages.properties
typeMismatch=bad value you bad bad person
test.numberbomb=you are driving me crazy with these bad inputs
Run Code Online (Sandbox Code Playgroud)
表格输出
无法将类型为java.lang.String的属性值转换为属性numberbomb所需的int类型; 嵌套异常是org.springframework.core.convert.ConversionFailedException:无法将类型java.lang.String中的值"three"转换为int类型; 嵌套异常是java.lang.NumberFormatException:对于输入字符串:"three"
我的控制器中的BindingResult.toString()
字段'numberbomb'上对象'test'中的字段错误:被拒绝的值[3]; 码[typeMismatch.test.numberbomb,typeMismatch.numberbomb,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable:codes [test.numberbomb,numberbomb]; 参数[]; 默认消息[numberbomb]]; 默认消息[无法将类型'java.lang.String'的属性值转换为属性'numberbomb'所需的类型'int'; 嵌套异常是org.springframework.core.convert.ConversionFailedException:无法将值"3"从类型'java.lang.String'转换为'int'类型; 嵌套异常是java.lang.NumberFormatException:对于输入字符串:"three"]
是否以<form:errors>错误的方式显示错误消息显示自定义错误消息?我是否需要在spring配置文件中添加一些内容以告诉它查看messages.properties?Spring似乎忽略了我的messages.properties文件(位于WEB-INF\classes文件夹中)
谢谢你的任何想法!
我的一位同事为我指明了正确的方向。我更改了 myservlet.xml 中的 messageSource bean
从
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="messages" />
<property name="cacheSeconds" value="1" />
</bean>
Run Code Online (Sandbox Code Playgroud)
到
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,这都解决了问题。谢谢同事!:)
| 归档时间: |
|
| 查看次数: |
5941 次 |
| 最近记录: |