需要
1.使用spring-modules-validation.jar ,
2.并且引入commons-validator.jar及相关的包,
3.一个标准的validator-rules.xml文件,和自定义的validation.xml文件,
4. 在*-servlet.xml中加入:
<!-- 表单验证管理 -->
<bean id="beanValidator"
class="org.springmodules.validation.commons.DefaultBeanValidator">
<property name="validatorFactory" ref="validatorFactory" />
</bean>
<bean id="validatorFactory"
class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations">
<list>
<value>WEB-INF/validator-rules.xml</value>
<value>WEB-INF/validation.xml</value>
</list>
</property>
</bean>
5. 在验证表单的处理参数中加入:@ModelAttribute("user") User user, BindingResult bindingResult
6. 在处理提交内容前加入: validator.validate(jituanmk, bindingResult);
表单验证的例子:
首先配置好上述的1-4的内容,然后在表单的处理方法中,作如下处理:
@RequestMapping("/userUpdate")
public String processJituanmkUpdate(@ModelAttribute("user") User user, BindingResult bindingResult, //此处加入验证对象,注意这两个参数必须紧挨着,以方便spring框架绑定
Model model ) throws IOException {
validator.validate(user, bindingResult);//使用validator.xml验证表单对象
if (bindingResult.hasErrors()) { //发生错误,把错误信息输出回表单页
logger.error(bindingResult.getFieldErrors());
model.addAttribute("errors", bindingResult.getFieldErrors());
return "userModify";
}
... //没有错误,继续处理
validaton.xml的编写与在struts中一致,需要注意的是:
<form name="user"> 中的name值是首字母小写的验证对象的类名。这个如果写错了,当然就得不到正确的验证结果。
spring-2.5+springmodules-0.9 ,测试通过。
其他验证方案,
1.可以使用@InitBinder注解绑定数据,参考资料2中详述,在spring发布包中的samples中的petclinic。
2.可以使用实现spring提供的Validator接口来处理。
或许还有其他方案,不过感觉对于平常的应用,使用validator.xml是最方便的,毕竟至少不需要写那么多用于验证的代码。
参考:
1.http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/
2.http://www.infoq.com/cn/articles/spring-2.5-ii-spring-mvc