Model view controller Spring3.0MVC似乎忽略了messages.properties

Model view controller Spring3.0MVC似乎忽略了messages.properties,model-view-controller,forms,spring-3,Model View Controller,Forms,Spring 3,Spring3.0MVC 首先,我还没有找到任何关于messages.properties@的文档。我找到的关于覆盖错误消息的所有内容都在不同的论坛上。如果有人提到messages.properties被记录在哪里,那就太棒了。也许messages.properties不是来自spring,而是来自java规范 我已经试着按照你的建议去做了 我的目标是用我自己的用户友好的错误消息替换一些类型不匹配的错误消息 我的情况如下: 模型 myservlet.xml <mvc:annotation-

Spring3.0MVC

首先,我还没有找到任何关于messages.properties@的文档。我找到的关于覆盖错误消息的所有内容都在不同的论坛上。如果有人提到messages.properties被记录在哪里,那就太棒了。也许messages.properties不是来自spring,而是来自java规范

我已经试着按照你的建议去做了 我的目标是用我自己的用户友好的错误消息替换一些类型不匹配的错误消息

我的情况如下:

模型

myservlet.xml

<mvc:annotation-driven/>
表单的输出

无法将java.lang.String类型的属性值转换为属性numberbomb所需的int类型;嵌套异常为org.springframework.core.convert.ConversionFailedException:无法将值“three”从java.lang.String类型转换为int类型;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“三”

控制器中的BindingResult.toString()

字段“numberbomb”上的对象“test”中的字段错误:拒绝值[3];代码[类型不匹配.test.numberbomb,类型不匹配.numberbomb,类型不匹配.int,类型不匹配];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[test.numberbomb,numberbomb];参数[];默认消息[numberbomb]];默认消息[未能将“java.lang.String”类型的属性值转换为属性“numberbomb”所需的类型“int”;嵌套异常为org.springframework.core.convert.ConversionFailedException:无法转换值“三”从类型“java.lang.String”到类型“int”;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“三”]

使用
显示错误消息是否以错误的方式显示自定义错误消息?我是否需要向spring配置文件中添加一些内容来告诉它查看messages.properties?Spring似乎忽略了my messages.properties文件(位于WEB-INF\classes文件夹中)


谢谢你的建议

我的一个同事给我指出了正确的方向。我在myservlet.xml中更改了MessageSourcebean

<mvc:annotation-driven/>




不管出于什么原因,这解决了问题。谢谢,同事!:)

该原因可在文档中找到!--“。支持通过“cacheSeconds”设置以及通过编程方式清除属性缓存来重新加载属性文件。由于应用程序服务器通常缓存从类路径加载的所有文件,因此有必要将资源存储在其他位置(例如,在WEB应用的“WEB-INF”目录中)。否则,类路径中文件的更改将不会反映在应用程序中。“
<form:form id="test" method="post" modelAttribute="test">

<form:errors path="*"/>

<form:label path="numberbomb">numberbomb</form:label>
<form:input path="numberbomb"/>

</form:form>
typeMismatch=bad value you bad bad person
test.numberbomb=you are driving me crazy with these bad inputs
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="messages" />
    <property name="cacheSeconds" value="1" />
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages"/>
</bean>