好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

在Controller中如下定义方法

?

1

2

3

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配置

?

1

2

3

4

@DateTimeFormat (pattern= "yyyy-MM-dd HH:mm:ss" )

     public Date getStartDate() {

         return startDate;

     }

?

1

2

3

4

5

< dependency >

             < groupId >joda-time</ groupId >

             < artifactId >joda-time</ artifactId >

             < version >${joda-time.version}</ version >

         </ dependency >

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

?

1

2

3

4

5

6

7

8

9

10

11

@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';

这里提供三种解决方案。

一、局部转换

?

1

2

3

4

5

6

7

8

9

10

11

12

13

@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接口

?

1

2

3

4

5

6

7

8

9

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中配置日期转换

?

1

2

3

4

5

6

<!-- 日期转换 -->

  < bean class = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >

   < property name = "webBindingInitializer" >

    < bean class = "com.wx.web.convertDate" />

   </ property >

  </ bean >

三、get方法配置

?

1

2

3

4

5

6

7

8

9

10

11

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 接受前台的时间格式 传到后台的格式

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

原文链接:https://blog.csdn.net/mlz_2/article/details/53813527

查看更多关于SpringMVC接收java.util.Date类型数据的2种方式小结的详细内容...

  阅读:29次