前端发过来的date类型数据 接收不了
也不行 后来发现一个单个 date配的方法
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
就可以了
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
返回前端字符串格式的时间
参考
在查询数据库的时候,返回的date类型是java.sql.date, 在自定义Node对象中设置为java.util.date,浏览器能够正常显示,但是sql.date丢失了时间的信息,只有日期,将sql以字符串的形式查询,得到的string转化为util.date,此时浏览器显示的是Long类型的时间戳;
解决方法:数据库查询结果为string,转化为util.date添加到node对象中,node对象的Date类型变量的定义中,添加注解:
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
spring会根据jsonFromat的格式格式化date类型的变量,浏览器GET请求得到node对象的时候,能够正常的显示时间。
//对象的定义中添加注解
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date crtdate;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date upddate;
//sql查询语句
sql=String.format("SELECT id,uuid,upddate,crtdate FROM TRAN0401");
try {
boolean result=st.execute(sql);
if(result)
{
rs=st.getResultSet();
JxNode node;
while(rs.next())
{
node=new JxNode();
String crtdate=rs.getString("crtdate"); //一定以字符串的形式取出,不然会丢失数据
String upddate=rs.getString("upddate");
node.setCrtdate(formatter.parse(crtdate));
node.setUpddate(formatter.parse(upddate));
}
}
SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意
一、SpringMVC使用@ResponseBody时返回json的日期格式
前提了解: @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。主要是以下两个jar包:jackson-core-asl-1.6.4.jar;jackson-mapper-asl-1.6.4.jar。
出现问题: 使用@ResponseBody时返回json字符串的日期格式。Date类型属性默认返回一个Long型的时间戳,怎样能够返回自定义的日期格式?
解决方案:目前有两种方式实现,
1、局部修改(网上较多,但不推荐);
继承Jackson的抽象类:JsonSerializer
代码如下:
使用方式:
2、全局修改(强烈推荐):
MappingJacksonHttpMessageConverter主要通过ObjectMapper来实现返回json字符串。这里我们继承该类,注册一个JsonSerializer
代码如下:
spring-servlet.xml中配置:
二、@DatetimeFormat使用注意
1、 使用@DatetimeFormat很简单,这里需要注意的是:使用时要引入一个类库joda-time-1.3.jar,否则会无法访问相应路径(400错误)。
ps:该注解可以作用在METHOD,FIELD以及PARAMETER级别上。
使用介绍参考:http://www.captaindebug.com/2011/08/using-spring-3-datetimeformat.html#.UaR3mWWZk0k
2、因为springMVC没有提供默认的日期转换器,前段页面传递过来日期字符串怎么转换为日期类型,如果没有提供全局日期转换器或者数据绑定的基础上,可以使用@DatetimeFormat注解完成。