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

 

 

你可能感兴趣的:(spring,bean,String,struts,user,Class)