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月加油。~~~~

  • 相关阅读:
    【Python入门自学笔记专辑】——面向对象编程-实例方法11.3.6
    最简单的轮播广告(原生JS)
    (转)JavaScript一:为什么学习JavaScript?
    JAVASCRIPT中经典面试题
    使用AngularJS实现简单:全选和取消全选功能
    canvas绘制经典折线图(一)
    前端总结
    PHP如何连接MySQL数据库
    PHP预定义变量
    PHP语法
  • 原文地址:https://www.cnblogs.com/lyy9902/p/8385369.html
Copyright © 2011-2022 走看看