Spring MVC 3中的模型对象验证

时间:2012-08-29 08:37:02

标签: spring validation spring-mvc

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

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

以这个pojo为例:

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

现在,我将通过html表单创建新的Person实例,如果age的类型是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>

1 个答案:

答案 0 :(得分: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...)。