欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMVC对日期类型的转换示例

程序员文章站 2024-03-06 16:38:44
在做web开发的时候,页面传入的都是string类型,springmvc可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置。 1、如果查询类使我们自己写...

在做web开发的时候,页面传入的都是string类型,springmvc可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置。

1、如果查询类使我们自己写,那么在属性前面加上@datetimeformat(pattern = "yyyy-mm-dd")  ,即可将string转换为date类型,如下

@datetimeformat(pattern = "yyyy-mm-dd") 
private date createtime; 

2、如果我们只负责web层的开发,就需要在controller中加入数据绑定:

@initbinder 
public void initbinder(webdatabinder binder) { 
simpledateformat dateformat = new simpledateformat("yyyy-mm-dd"); 
dateformat.setlenient(false); 
binder.registercustomeditor(date.class, new customdateeditor(dateformat, true)); //true:允许输入空值,false:不能为空值

3、可以在系统中加入一个全局类型转换器

实现转换器

public class dateconverter implements converter<string, date> { 
@override 
public date convert(string source) { 
 simpledateformat dateformat = new simpledateformat("yyyy-mm-dd"); 
 dateformat.setlenient(false); 
 try { 
  return dateformat.parse(source); 
 } catch (parseexception e) { 
  e.printstacktrace(); 
 }   
 return null; 
}

进行配置:

<bean id="conversionservice" class="org.springframework.format.support.formattingconversionservicefactorybean"> 
  <property name="converters"> 
   <list> 
    <bean class="com.doje.xxx.web.dateconverter" /> 
   </list> 
  </property> 
</bean> 
<mvc:annotation-driven conversion-service="conversionservice" /> 

4、如果将日期类型转换为string在页面上显示,需要配合一些前端的技巧进行处理。

5、springmvc使用@responsebody返回json时,日期格式默认显示为时间戳。

@component("customobjectmapper") 
public class customobjectmapper extends objectmapper { 
 
 public customobjectmapper() { 
  customserializerfactory factory = new customserializerfactory(); 
  factory.addgenericmapping(date.class, new jsonserializer<date>() { 
   @override 
   public void serialize(date value, jsongenerator jsongenerator, 
     serializerprovider provider) throws ioexception, jsonprocessingexception { 
    simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss"); 
    jsongenerator.writestring(sdf.format(value)); 
   } 
  }); 
  this.setserializerfactory(factory); 
 } 
}

配置如下:

<mvc:annotation-driven> 
 <mvc:message-converters> 
  <bean class="org.springframework.http.converter.json.mappingjacksonhttpmessageconverter"> 
   <property name="objectmapper" ref="customobjectmapper"></property> 
  </bean> 
 </mvc:message-converters> 
</mvc:annotation-driven> 

6、date类型转换为json字符串时,返回的是long time值,如果需要返回指定的日期的类型的get方法上写上@jsonformat(pattern="yyyy-mm-dd hh:mm:ss",timezone = "gmt+8") ,即可将json返回的对象为指定的类型。

@datetimeformat(pattern="yyyy-mm-dd hh:mm:ss") 
@jsonformat(pattern="yyyy-mm-dd hh:mm:ss",timezone = "gmt+8") 
public date getcreatetime() { 
return this.createtime; 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。