SpringMVC接收java.util.Date类型数据的2种方式小结

 更新时间:2021年08月10日 17:11:43   作者:suanday_sunny  
这篇文章主要介绍了使用SpringMVC接收java.util.Date类型数据的2种方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringMVC接收java.util.Date类型数据

在Controller中如下定义方法

public PassQueryRequest trade(@ModelAttribute PassQueryRequest tradeRequest,
   @RequestParam(value="startDate", required=true)Date startDate,
   @RequestParam(value="endDate", required=true)Date endDate

1、在springmvc中使用对象接收参数时

在PassQueryRequest中,在日期属性的set方法中增加定义,以及maven配置

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    public Date getStartDate() {
        return startDate;
    }
<dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>${joda-time.version}</version>
        </dependency>

2、直接使用java.util.Date变量接收参数

@org.springframework.web.bind.annotation.InitBinder
 public void InitBinder(
   /* HttpServletRequest request, */ServletRequestDataBinder binder) {
  // 不要删除下行注释!!! 将来"yyyy-MM-dd"将配置到properties文件中
  // SimpleDateFormat dateFormat = new
  // SimpleDateFormat(getText("date.format", request.getLocale()));
  System.out.println("执行了InitBinder方法");
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  dateFormat.setLenient(false);
  binder.registerCustomEditor(Date.class, null, new CustomDateEditor(dateFormat, true));
 }

解决 springmvc中接收date数据问题

springmvc Controller类中需要接收的是Date类型,但是在页面端传过来的是String类型,就会出现以下异常

Failed to convert value of type 'java.lang.String' to required type 'java.util.Date';

这里提供三种解决方案。

一、局部转换

@Controller
@RequestMapping("order")
public class OrderCtrl extends CtrlSupport {
 private static final Logger logger = LoggerFactory.getLogger(OrderCtrl.class);
 
 // 将字符串转换为Date类
  @InitBinder
  public void initBinder(WebDataBinder binder, WebRequest request) {
   // 转换日期格式
   DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); 
  }
}

二、全局转换

1.创建convertDate类实现WebBindingInitializer接口

public class convertDate implements WebBindingInitializer{ 
 @Override
 public void initBinder(WebDataBinder binder, WebRequest request) {
  // TODO Auto-generated method stub
  //转换日期
  DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
 }
}

2.在Spring-MVC.xml中配置日期转换

<!-- 日期转换 -->
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  <property name="webBindingInitializer">
   <bean class="com.wx.web.convertDate"/>
  </property>
 </bean>

三、get方法配置

import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
 
@DateTimeFormat(pattern = "yyyy-MM-dd")  
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
public Date getGetLicenseTime() {
 return getLicenseTime;
}
public void setGetLicenseTime(Date getLicenseTime) {
 this.getLicenseTime = getLicenseTime;
}

@JsonFormat 默认是标准时区的时间, 北京时间 东八区 timezone=”GMT+8”

作用:后台的时间 格式化 发送到前台

@DateTimeFormat 接受前台的时间格式 传到后台的格式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot结合ECharts案例演示示例

    Spring Boot结合ECharts案例演示示例

    本文主要主要介绍了Spring Boot结合ECharts案例演示示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 一起因MySQL时间戳精度引发的血案分析

    一起因MySQL时间戳精度引发的血案分析

    这篇文章主要给大家介绍了一起因MySQL时间戳精度引发的血案的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • List集合多线程并发条件下不安全如何解决

    List集合多线程并发条件下不安全如何解决

    List是我们常用的集合,但是在多线程并发的条件下,会出现安全问题吗?下面我们就来测试一下,如果出现安全问题,该如何解决,感兴趣的可以了解一下
    2021-12-12
  • Java 关于eclipse导入项目发生的问题及解决方法(推荐)

    Java 关于eclipse导入项目发生的问题及解决方法(推荐)

    下面小编就为大家分享一篇Java 关于eclipse导入项目发生的问题及解决方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • IDEA maven上传速度很慢的解决办法

    IDEA maven上传速度很慢的解决办法

    maven上传的速度很慢,排除网络原因,需要检查配置,本文主要介绍了IDEA maven上传速度很慢的解决办法,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 结合mybatis-plus实现简单不需要写sql的多表查询

    结合mybatis-plus实现简单不需要写sql的多表查询

    这篇文章主要给大家介绍了关于结合mybatis-plus实现简单不需要写sql的多表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis-plus具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • SpringBoot根据注解动态执行类中的方法实现

    SpringBoot根据注解动态执行类中的方法实现

    本文主要介绍了SpringBoot根据注解动态执行类中的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 泛谈Java NIO

    泛谈Java NIO

    java.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO),使用它可以提供非阻塞式的高伸缩性网络。下面我们来简单了解一下吧
    2019-05-05
  • Mybatis generator的使用全面解析

    Mybatis generator的使用全面解析

    这篇文章主要介绍了Mybatis generator的使用,非常不错,具有参考借鉴价值,对mybatis generator的使用相关知识感兴趣的朋友一起学习吧
    2016-09-09
  • SpringBoot跨域问题的解决方法实例

    SpringBoot跨域问题的解决方法实例

    这篇文章主要给大家介绍了关于SpringBoot跨域问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论