spring mvc 绑定对象 并进行校验

来源:互联网 发布:詹姆斯各项数据排名 编辑:程序博客网 时间:2024/06/05 04:37

众所周知,Spring Mvc可以对表单里传到后台的数据进行自动的封装(前提是遵循一定的规则),现在可以将spring里面的一些方法做一个合并,形成一个新的方法,使其达到接收并封装表单数据、完成数据校验、若有错时返回错误原因等作用,现将代码贴出来,欢迎大家交流指正:

abstract public class BaseController extends MultiActionController {

       。。。。。。

 /**
     * 从Request中绑定对象并进行校验. Spring MVC中的Bind函数未完全符合需求,因此参考原代码进行了扩展
     *
     * @return 校验错误
     */
    protected BindingResult bindObject(HttpServletRequest request, Object command) throws Exception {
        Assert.notNull(command);//这里的command通常是实体对象
        // 创建Binder
        ServletRequestDataBinder binder = createBinder(request, command);
        // 回调函数,供子类扩展对binder做出更进一步设置,并进行不能由binder自动完成的绑定,可忽略这一步
        preBind(request, command, binder);
        // 绑定
        binder.bind(request);
        // 校验
        Validator[] validators = getValidators();
        if (validators != null) {
            for (Validator validator : validators) {
                if (validator.supports(command.getClass())) {
                    ValidationUtils.invokeValidator(validator, command, binder.getBindingResult());
                }
            }
        }
        return binder.getBindingResult();
    }

}

通过上面的方法,便可以完成将表单数据封装到一个对象(通常称为绑定数据),并且完成校验,如果在校验的过程中出现了错误,错误信息会保存在BindingResult对象里面,通过调用它的xxx.hasErrors()方法,可以判断数据校验时是否出错了。


欢迎大家多交流!

1 0
原创粉丝点击