我正在使用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>
答案 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...
)。