背景:springmvc4.3.2+spring4.3.2+mybatis3.4.1

当前台传递的参数有时间类型时,封装的vo对象也有对应的时间类型与之对象,

但是如果此时用对象去接收后台会报错,类型转换异常。

例子:

 @RequestMapping("/test5")
public String test5(ResultInfo result){
Date birthday = result.getBirthday();
System.out.println(birthday);
System.out.println(result);
return "success";
}
 <form action="json/test5" method="post">
<input type="date" name="birthday" id="birthday"/>
<input type="text" name="code" />
<input type="text" name="desc" />
<input type="submit" value="提交" />
</form>

报错如下:

Field error in object 'resultInfo' on field 'birthday': rejected value [2018-01-02]; 
codes [typeMismatch.resultInfo.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [resultInfo.birthday,birthday];
arguments []; default message [birthday]]; default message [Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property 'birthday';
nested exception is org.springframework.core.convert.ConversionFailedException:
Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2018-01-02'; nested exception is java.lang.IllegalArgumentException]

看这红色的部分知道,消息转换器不能将字符串转换为时间类型的数据。需要我们手动的去转换。

我们只需要在vo(ResultInfo )对象的时间类型的属相加上@DateTimeFormat(pattern="yyyy-mm-dd") 就可以啦

 public class ResultInfo implements Serializable{

     private static final long serialVersionUID = 1L;

     private String code ;
private String desc;
private Object data;
//解决后台类型为时间类型无法转换的问题
@DateTimeFormat(pattern="yyyy-mm-dd")
private Date birthday;
}

需要注意的是:

@dateTimeFormat是针对表单提交的情况可以使用,但是当前端使用json数据进行传输的时候就不行了

使用json数据传输时,我们常用的注解是@requestBody

此时需要使用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")

此时就可以完美的映射时间字段了,使用了@jsonFormat注解的字段在前端显示的时候,也会格式化输出哦

解释下timezone字段的意思:我们中国是东八区,需要加上8正确的显示我们时区的时间

如果有不对,欢迎指正!

springmvc时间类型值传输映射的更多相关文章

  1. linux把时间类型值转换为数值型

    字符及字符串处理函数:字符及字符串处理函数的处理对象均为字符型数据,但其返回值类型各异.1.取子串函数:格式:substr(c,n1,n2)功能:取字符串C第n1个字符起的n2个字符.返回值类型是字符 ...

  2. jdk8环境下sprngboot/springmvc中JSR310新日期/时间类LocalDateTime显示效果带T

    如图所示: 日期时间类中带了一个T,以上这种格式LocalDateTime格式化的时候默认日期时间格式:ISO.DATE_TIME(按笔者目前的知识理解是ISO8601规范中的日期时间格式化) 想要把 ...

  3. response的contentType的类型值Response.ContentType

    MIME类型的含义 MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开.多用于指定一些客户端自定义的文件名,以及一些媒体 ...

  4. Java日期时间类

    日期时间类有三种: 一.java.util.Date:一般用于声明日期时间类型的变量. 二.java.sql.Date:一般用于数据库日期时间的映射. 三.java.util.Calendar:一般用 ...

  5. QMetaEnum利用Qt元数据实现枚举(enum)类型值及字符串转换

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QMetaEnum利用Qt元数据实现枚举(enum)类型值及字符串转换     本文地址:ht ...

  6. Spring MVC控制器类名称处理映射

    以下示例显示如何使用Spring Web MVC框架使用控制器类名称处理程序映射. ControllerClassNameHandlerMapping类是基于约定的处理程序映射类,它将URL请求映射到 ...

  7. Spring MVC-处理程序映射(Handler Mapping)-控制器类名称处理程序映射(Controller Class Name Handler Mapping)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_controllerclassnamehandlermapping.htm 说明: ...

  8. Java中常见时间类的使用

    模拟场景针对于常用的操作API,比如流操作(字符流.字节流),时间操作等,仅仅了解概念性的定义终究是无法了解该类的用途和使用方式:这种情况在使用的时候便一脸茫然,脑海中映射不到对应的知识点.本篇博客将 ...

  9. SAP S4HANA如何取到采购订单ITEM里的'条件'选项卡里的条件类型值?

    SAP S4HANA如何取到采购订单ITEM里的'条件'选项卡里的条件类型值? 最近在准备一个采购订单行项目的增强的function spec.其中有一段逻辑是取到采购订单行项目条件里某个指定的条件类 ...

随机推荐

  1. Android无线测试之—UiAutomator UiObject API介绍一

    UiObject类介绍 一.UiObject类介绍 UiObject代表一个UI元素,通过UiSelector查找跳进创建一个UiObject实例,找到这个实例以后可以对这个实例进行各类操作 二.Ui ...

  2. python学习【第十篇】单例设计模式

    单例设计模式 目的:让类创建对象,在系统中只有唯一的实例,让每一次创建的对象返回的内存地址都是相同的. __new__方法 使用类名创建对象时,python解释器首先会调用__new__方法为对象分配 ...

  3. Nuske vs Phantom Thnook

    Nuske vs Phantom Thnook Time limit : 4sec / Memory limit : 256MB Score : 700 points Problem Statemen ...

  4. linux 终端操作快捷键

    熟练使用快捷键可以很大的提高效率,以下列出一些常用的快捷键命令方便随时查阅 1. 移动光标 Ctrl + a 标移到行首.它在多数文本编辑器和 Mozilla 的 URL 字段内可以使用.Ctrl + ...

  5. <2013 08 12> Andrew:C语言的一点心得

    C语言的特点在于,这是少见的中级语言(介于机器汇编和高级语言之间),因此它极其紧密地与特定机器架构.编译器.操作系统.库等基本概念相连.在底层,人们可以少量的甚至不使用汇编,但是不能不使用C.它以一种 ...

  6. MySQL权限系统(三).权限表 Grant Tables

    7.2.2 Grant Tables 授权表 The mysql system database includes several grant tables that contain informat ...

  7. MySQL中备份的几种方式

    前言: 并不是每家公司都高大上,并不是每家公司都会用一些很前沿的技术来做备份这一块,有些企业或者有些行业或者团队本身由于各方面的原因使用简单或者复杂的方式来做备份这块,这次这个文档算是对以前工作的总结 ...

  8. 我的Android进阶之旅------>Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi")

    Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi") 例如:AndroidManifest.xml中,我们配置了sdk版本的 ...

  9. python requests 使用

    快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Req ...

  10. attention机制七搞八搞

    注意力机制即Attention mechanism在序列学习任务上具有巨大的提升作用,在编解码器框架内,通过在编码段加入A模型,对源数据序列进行数据加权变换,或者在解码端引入A模型,对目标数据进行加权 ...