张孝祥专栏

以平常心工作,远离忧虑,除了让自己快乐,也要让别人快乐!

用户操作
[即时聊天] [发私信] [加为好友]
张孝祥ID:zhangxiaoxiang
556189次访问,排名75好友4人,关注者142
zhangxiaoxiang的文章
原创 129 篇
翻译 0 篇
转载 2 篇
评论 339 篇
张孝祥的公告
《深入体验Java Web开发内幕——高级特性》已经出版。 传智播客开展:先培训,就业后再还款活。详细信息查询:http://www.itcast.cn/goodnews.htm
最近评论
kwlong2008:

来看看朋友,最近过的怎么样?俺的空间是介绍
网站制作网站建设的,有时间也常去一下我的空间谢谢,
kwlong2008:

来看看朋友,最近过的怎么样?俺的空间是介绍
网站制作网站建设的,有时间也常去一下我的空间谢谢,
kwlong2008:

来看看朋友,最近过的怎么样?俺的空间是介绍
网站制作网站建设的,有时间也常去一下我的空间谢谢,
kwlong2008:

来看看朋友,最近过的怎么样?俺的空间是介绍
网站制作网站建设的,有时间也常去一下我的空间谢谢,
programmer_duncan:谢谢张老师分享!!!
文章分类
收藏
    相册
    传智播客原创教材展示
    培训
    《深入体验javaweb开发内幕——高级特性》出版啦!
    培训就业后还款计划正式启航
    良少的blog
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 11月30在spring mvc中使用Validator框架和文件上传收藏

    新一篇: 12月1日struts、spring、hibernate等框架的整合培训日记 | 旧一篇: 11月28日Validator框架培训日记

    首先回顾了spring mvc中的表单验证和业务逻辑校验失败后,回到表单页面中显示错误信息的整个内部运行流程。
    表单校验出错后回到表单注册页面是由默认的SimpleFormController的processFormSubmission方法自动完成的,王涛忘记这一点,他们覆盖了processFormSubmission方法,直接在processFormSubmission方法中执行业务逻辑校验,结果导致表单校验失败后不能回到表单注册页面。
    查看帮助文档,可以了解到SimpleFormController的详细工作流程,特别是看onSubmit(Object command,BindException errors)这个方法的帮助,就知道怎样写业务逻辑校验失败的代码了。
    protected ModelAndView onSubmit(Object command,
                                    BindException errors)
    {
      errors.addError(new FieldError("name","用户名重复"));
      return new ModelAndView(this.getFormView(),errors.getModel());
    }
    接着分析了onSubmit方法与doSubmitAction方法的应用区别。

    讲解了如何将Validator框架集成到spring中的设计思想:
    class MyValidator implements Validator
    {
     boolean supports(Class clazz)
     {
      为什么不能使用:UserCommand.class.equals(clazz);?
      这主要是因为Class没有覆盖equals方法。
     }

     void validate(Object obj,Errors errors)
     {
     }
    }
    编写的校验方法的定义应该如下:
    public static boolean validateFloatRange(java.lang.Object bean,
                                             ValidatorAction va,
                                             Field field,
                                             Errors errors)
    {
              ......
    }
    所以,MyValidator类的validate(Object obj,Errors errors)方法应编写成如下形式“
     void validate(Object obj,Errors errors)
     {
      ValidateResources resources = new ValidateResources(Inputstream []);
      Validator validator = new Validator(resources,"/logon");
      valdiator.setParameter(Validator.PARAM_BEAN,obj);
      validator.setParameter("org.springframework.validation.Errors",errors);
      validator.validate();
            }
    我问魏奕东,相比他以前不用validator框架而编写的对表单信息进行校验的代码和这次使用validator框架编写的代码,哪个更复杂,他愿意采用哪个?显然,使用validator框架编写的代码更复杂、他更愿意用以前的方式进行表单校验,那我们为什么要使用validator框架呢?这是为了实现代码重用和校验逻辑的封装和配置使用。如果他想在公司做到更高的开发职位,他想拿到更多的工资,他就应该使用validator框架,这样,其他级别低的程序员可以不写校验代码了,而直接在validator框架中插入魏奕东写的校验方法,老板就会将从其他人身上省下的一部分工钱装入到魏奕东的口袋,呵呵!

    魏奕东,别高兴得太早!你想干的这份工作,早就有人干了,这就是spring module,它模仿struts实现的validator框架,实现了调用validator框架的sring mvc的Validator,现在,我们就来看看如何使用spring module提供的validtor吧!

    接着我为大家讲解了如何使用spring module提供的validtor来执行表单校验,不过,由于spring不支持动态command对象,所以,我们还无法象struts那样不写一行代码也玩个完整的view层。

    杨松发现appfuse中带的spring module 1.0没有validateWhen这个校验规则,不过,我们现在用的是spring module 6.0,不用担心这个问题。

    接着为大家讲了struts中的文件上传和spring mvc中的文件上传,strtus的文件上传很简单,而spring mvc中的文件上传稍微复杂一些,首先要在配置文件中配置CommonsMultipartResolver,spring mvc才会处理multipart的数据请求,接着就可以使用CommonsMultipartFile处理很大的上传文件了,不用担心数组越界的问题。王涛能够接着我讲解的思路说出ByteArrayMultipartFileEditor内部其实就是调用了CommonsMultipartFile的getByte方法来实现将上传的文件转换成字节数组的,真是不错,看来他已经有了自己的编程感觉了,呵呵。


     

    发表于 @ 2006年12月07日 17:19:00|评论(loading...)|编辑

    新一篇: 12月1日struts、spring、hibernate等框架的整合培训日记 | 旧一篇: 11月28日Validator框架培训日记

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 张孝祥