Lightadmin 用于时间戳字段,例如:
@Temporal(TemporalType.TIMESTAMP)
@Column(name="started_at")
Date startedAt;
不会格式化它们,而是将它们显示为自纪元以来的毫秒数,例如1398940456150
.
当您进入 Lightadmin 编辑页面时,例如http://localhost:8080/admin/domain/user/1/edit
实际填充表单的值在另一个请求中收到 - http://localhost:8080/admin/rest/user/1/unit/formView?_=1401699535260
,该请求返回 JSON:
...
"startedAt" : {
"name" : "startedAt",
"title" : "started at timestamp",
"value" : 1398940456150,
"type" : "DATE",
"persistable" : true,
"primaryKey" : false
}
...
任务是更改1398940456150
为例如01.05.2014 10:34:16
。
根据我的调查,org.lightadmin.core.rest.DynamicRepositoryRestController.entity()
是此类请求的入口点,负责生成JSON的代码在里面org.springframework.data.rest.webmvc.RepositoryAwareMappingHttpMessageConverter.writeInternal()
::
try {
mapper.writeValue(jsonGenerator, object);
} catch(IOException ex) {
throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex);
}
mapper
是 的一个实例org.codehaus.jackson.map.ObjectMapper.ObjectMapper
,用默认值初始化。如果可以添加这两行:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
mapper.getSerializationConfig().setDateFormat(df);
它会完成这项工作,问题是如何做到这一点?