DateTime Picker String value 转换 Date (Springmvc 注解@DateTimeFormat) 解决400请求无效问题

来源:互联网 发布:淘宝店铺怎么改专业版 编辑:程序博客网 时间:2024/06/05 14:06

今天使用DateTime Picker 控件像后台传数据时一直报400请求无效问题,请求无效最可能的原因是:前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装
前台浏览器console打印DateTime value type 为字符串类型而后台实体类的类型为java.util.Date,错误原因大概是找到了,但是转换过程饶了很多弯路,尝试了添加同名的setter函数,实现函数重载,如下:

    public void setStartTime(String startTime) {        this.startTime = StrToDate(startTime);    }    /**    * 字符串转换成日期    * @param str    * @return date    */    private static Date StrToDate(String str) {       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");       Date date = null;       try {        date = format.parse(str);       } catch (ParseException e) {        e.printStackTrace();       }       return date;    }

但是未能解决问题。
google看到有coder采用springmvc注解的方式实现类型的转换,找到问题的突破点,尝试并成功解决问题,过程如下:

  1. 在所要转换的字段上方添加注解

    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")     private Date startTime;
  2. 为@DateTimeFormat使用添加配置
    引入 maven joda-time 依赖包或是手动添加 joda-time jar包(特别重要)。

  3. Spring-web添加@DateTimeFormat使用配置添加:

    <mvc:annotation-driven></mvc:annotation-driven>

@DateTimeFormat实现页面传到控制层Controller的Date转换,对其他的数据查询不会有影响。
今晚的补坑,希望能对新Coder有所帮助,GoodNight~