5

Spring 3.0 MVC

首先,我没有找到任何关于messages.properties @ springsource的文档 我发现的关于覆盖错误消息的所有内容都在各个论坛上。如果有人参考了messages.properties 的记录位置,那就太好了。也许messages.properties 不是来自spring 而是来自java 规范?

我已经尝试遵循 JSR-303 Type Checking Before Binding的建议我的目标是用我自己的用户友好的错误消息替换一些类型不匹配的错误消息

我的情况如下:

模型

public class Test {

    private int numberbomb;

    public int getNumberbomb() {
        return numberbomb;
    }

    public void setNumberbomb(int numberbomb) {
        this.numberbomb = numberbomb;
    }
}

myservlet.xml

<mvc:annotation-driven/>

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>

类\messages.properties

typeMismatch=bad value you bad bad person
test.numberbomb=you are driving me crazy with these bad inputs

表单输出

无法将 java.lang.String 类型的属性值转换为属性 numberbomb 所需的 int 类型;嵌套异常是 org.springframework.core.convert.ConversionFailedException:无法将值“三”从 java.lang.String 类型转换为 int 类型;嵌套异常是 java.lang.NumberFormatException: For input string: "three"

我的控制器中的 BindingResult.toString()

字段“numberbomb”上的对象“测试”中的字段错误:拒绝值 [三];代码 [typeMismatch.test.numberbomb,typeMismatch.numberbomb,typeMismatch.int,typeMismatch]; 参数 [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: For input string: "three"]

是否以<form:errors>错误的方式显示错误消息显示自定义错误消息?我是否需要在 spring 配置文件中添加一些东西来告诉它查看messages.properties?Spring 似乎忽略了我的 messages.properties 文件(位于 WEB-INF\classes 文件夹中)

感谢您的任何想法!

4

1 回答 1

4

我的一位同事为我指明了正确的方向。我更改了 myservlet.xml 中的 messageSource bean

<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>

无论出于何种原因,这都解决了这个问题。谢谢同事!:)

于 2011-06-30T23:39:32.997 回答