zoukankan      html  css  js  c++  java
  • 关于SpringMVC, bean对象中含有Date型变,改如何接收数据的问题。

    前提:昨天夫君十万火急的呼唤我,说他程序报错了。错误很简单,String类型 转换Date类型失败。关键的是,他看不到前台页面,也没办法打断点看数据情况。于是,我决定拯救万民于水火之中,总结一下 关于前后台数据传输时候String和Date的类型转换问题。

     简单写了一个小程序,使用的框架是SSM。

    前端jsp 如下图:

    bean层 如下图所示:

    控制层 如下图所示:

    这样 运行整个项目,报错。因为String类型转换Date类型失败。

    -----------------------------------------------------------------------------我是分隔符--------------------------------------------------------------------------------

    目前有几种办法解决,我们一个一个说:

    第一种:(从前台入手)

      前台给后台传日期类型的值,这个值的格式 大体有两种。一种是2018-02-01,另一种是2018/02/01。

      当传入的日期类型格式为2018-02-01时:

      

      运行结果为:(报错

      

      注: 造成错误400的原因--前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装。

      当传入的格式为2018/02/01时:

      

       运行结果为:(不报错

      

      注:显示出现中文乱码,因为没有在配置文件中,做处理。下一篇再讲解关于中文乱码的问题。

       关于第一种办法的小结:   

      1.当前端的日期按照2018/02/01的格式传输给后台时,程序可以将该字符串类型的日期自动转换成日期格式,存储到实体类中。

      2.当前端的日期按照2018-02-01的格式传输给后台时,程序无法转换,抛异常。一般情况下,使用日期控件传回来的日期格式为2018-02-01.

      -----------------------------------------------------------------------------我是分隔符--------------------------------------------------------------------------------

     第二种:(从控制层入手)

        个人比较推荐这种做法,在控制层 加入如下一个方法:

        

        代码如下:

            @InitBinder
            public void initBinder(ServletRequestDataBinder bin) {
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                 CustomDateEditor cust = new CustomDateEditor(sdf, true);
                 bin.registerCustomEditor(Date.class, cust);
            }

         运行展示:

        

        

        注:这种办法 不仅使用于对象中的Date类型变量,同样使用于Date类型的对象。

        将controller做下更改:

        

        运行:

        

        结果:

        

       -----------------------------------------------------------------------------我是分隔符--------------------------------------------------------------------------------

        其实,也可以用String类型的变量去接受这样一个数据,然后再将这个String类型转换成Date类型(通过SimpleDateFormat)。这个方法,就不举例了。

        希望越来越好。2月加油。~~~~

  • 相关阅读:
    LeetCode347 前k个高频元素
    剑指42 连续字数租的最大和
    hdu1540
    hdu4553 两棵线段树
    cdq分治
    负环
    最短路
    差分约束系统
    hdu3308
    hdu5862 树状数组+扫描线+离散化
  • 原文地址:https://www.cnblogs.com/lyy9902/p/8385369.html
Copyright © 2011-2022 走看看