1

我正在使用 Spring MVC 3,并尝试对模型对象使用验证注释。

但是我发现这个验证只有在没有抛出异常的情况下才有效。

以这个 pojo 为例:

public class Person{
    private String name;
    @Min(30)
    private int age;
}

现在,我将通过 html 表单创建新的 Person 实例,如果年龄的类型是 int,则验证工作。

但如果不是(例如,用户输入了一个年龄字符串),它将抛出异常。

我想知道在哪里捕获这个异常并将它的消息放在错误表单字段中?


更新:

servlet-context.xml

<mvc:annotation-driven />
<mvc:view-controller path="/" view-name="home" />
<context:component-scan base-package="com.king.controller" />
<mvc:resources mapping="/res/**" location="/res/" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>
4

1 回答 1

1

尝试在您的资源消息属性文件中添加一个带有typeMismatch键的属性。

以通用方式处理任何 typeMismatch 错误:

typeMismatch=This is a not valid type

或更具体地,对于具体属性:

typeMismatch.person.age=This is a not valid a type

这将防止 Spring 抛出异常,并将相应的消息添加到您的错误中。

希望这可以帮助。

更新:

您必须在servlet-context.xml中添加此 bean :

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
        p:basename="/WEB-INF/messages/validation" />

并在/WEB-INF/messages文件夹中添加文件validation.properties ,并使用上面提到的值()。typeMismatch...

于 2012-08-29T10:29:38.043 回答