gpt4 book ai didi

ajax - Spring-roo REST JSON Controller 处理日期字段

转载 作者:行者123 更新时间:2023-12-01 01:23:09 25 4
gpt4 key购买 nike

我有一个以两种方式使用的数据实体,当页面加载时,我用它的一些数据填充一个表,当你点击该列的一行时,我 AJAX 该项目的详细信息并将它们显示在表单字段中.我在服务器端使用 Spring-Roo 生成的 REST 端点,在客户端使用 Backbone.js。

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

我可以在客户端转换它,但这很愚蠢。知道如何让我的 json Controller 不这样做吗?

我已经尝试将这些字段推送到我的 .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);
}

就这样 :-)

知道你也可以申请不同的 Date (不仅如此)不同领域的转换,如下所示:
transform(new DateTransformer("MM/dd/yyyy"), "person.birthday")

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

关于ajax - Spring-roo REST JSON Controller 处理日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com