加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – Spring-roo REST JSON控制器mangle日期字段

发布时间:2020-12-16 02:49:20 所属栏目:百科 来源:网络整理
导读:我有一个数据实体,我使用两种方式,当页面加载时,我用一些数据填充表格,当你点击该列的一行时,我 AJAX了该项目的详细信息并在表单字段中显示它们.我在服务器端使用 Spring-Roo生成的REST端点,在客户端使用Backbone.js. 当表加载时,日期字段具有我期望的格式,
我有一个数据实体,我使用两种方式,当页面加载时,我用一些数据填充表格,当你点击该列的一行时,我 AJAX了该项目的详细信息并在表单字段中显示它们.我在服务器端使用 Spring-Roo生成的REST端点,在客户端使用Backbone.js.

当表加载时,日期字段具有我期望的格式,直接来自我的MySQL数据库(“yyyy-MM-dd”).当我获得我的AJAX数据时,日期字段作为Unix时间值(例如“1323666000000”)来到我这里.

我可以在客户端转换它,但那是愚蠢的.知道如何让我的json控制器不这样做吗?

我已经尝试将这些字段推入我的.java文件并弄乱@DateTimeFormat注释,但我看不出这有什么区别.

解决方法

您可以将日期转换为JSON响应所需的任何格式.

在您的情况下,您一直在使用java.util.Date类型字段的默认JSON日期转换器.这基本上是Spring Roo为您生成的内容.看看你的* _Roo_Json方面,你会发现smth.像这样:

public java.lang.String PizzaOrder.toJson() {
    return new JSONSerializer().exclude("*.class").serialize(this);
}

这样的实现使用flexjson.transformer.BasicDateTransformer类来为您转换日期.它实现如下:

public class BasicDateTransformer extends AbstractTransformer {
    public void transform(Object object) {
        getContext().write(String.valueOf(((Date) object).getTime()));
    }
}

你想要的是使用一个不同的,更强大的变压器.幸运的是它伴随着你的Roo,它被称为flexjson.transformer.DateTransformer.现在,为了正确格式化日期,只需将默认值替换为新的变换器,例如像这样:

public java.lang.String PizzaOrder.toJson() {
    return new JSONSerializer().exclude("*.class")
             .transform(new DateTransformer("MM/dd/yyyy"),Date.class)
             .serialize(this);
}

就这样 :-)

知道您也可以为不同的字段应用不同的日期(而不仅仅是)转换,如下所示:

transform(new DateTransformer("MM/dd/yyyy"),"person.birthday")

有关flexjson的更多信息,请查看FLEXJSON project page.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读