spring 注解方式下使用commons-validator 验证表单

需要

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

你可能感兴趣的:(Validator)