SpringMVC对日期类型的转换示例
程序员文章站
2024-03-07 18:30:21
在做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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: laravel中命名路由的使用方法
下一篇: 浅谈PHP的反射API