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

原文: http://www.programgo.com/article/12411299733/
参考:
spring(3) mvc 注解验证springmodules common validator (注解验证) http://blog.csdn.net/zheng963/article/details/48681057
实战springmodules common validator http://blog.csdn.net/sunxing007/article/details/4660262

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

你可能感兴趣的:(spring 注解方式下使用commons-validator 验证表单)