【问题标题】:Spring roo not recognizing date format before saving jsonSpring roo 在保存 json 之前无法识别日期格式
【发布时间】:2011-12-06 14:51:58
【问题描述】:

我在 MySQL 之上使用 Spring Roo。我通过 Roo 生成的 JSON 方法提取日期,在浏览器表单中更改该数据,然后通过 Roo 生成的 JSON 方法将其保存回来。

我得到的日期格式是yyyy-MM-dd,标准的 MySQL 日期格式。我在浏览器上使用日历小部件来确保我提交的日期格式相同。

不幸的是,我的数据没有通过...FromJson() 方法,失败并出现错误:

Parsing date 2007-12-12 was not recognized as a date format

我认为问题在于它以字符串形式出现,但 JPA 感觉它需要生成一个 Date 对象来更新。

我很乐意展示我的代码,但这不是 Roo 为我构建的。

我突然想到,当它说“被识别为日期格式”时,它指的是某些东西。有什么地方可以更改它知道的日期格式吗?

编辑:在@nowaq 的帮助下,这是最终的答案:

public static Lease fromJsonToLease(String json) {
    return new JSONDeserializer<Lease>()
            .use(null, Lease.class)
            .use(Date.class, new DateFormatter("yyyy-MM-dd"))
            .deserialize(json);
}

这样,JSONDeserializer 就知道它正在处理哪个类,并为该类中的所有日期构建一个格式化程序。邪恶!

【问题讨论】:

    标签: mysql spring date jpa spring-roo


    【解决方案1】:

    您的问题与这个问题非常相关:Spring-roo REST JSON controllers mangle date fields 看看并确保您在 JSON 反序列化器中使用了正确的 DateTrasformer(s)。例如

    new JSONDeserializer()
          .use(Date.class, new DateTransformer("yyyy-MM-dd") )
          .deserialize( people );
    

    【讨论】:

    • 原来我需要两个.use 调用,一个用于定义我正在使用的类,另一个用于为该类中的日期配置日期转换器。谢谢!
    • @DanRay 我正在通过添加 new DateFormatter("yyyy-MM-dd") 来解决您的问题,但看起来 DateFormater 不起作用?我需要将其强制转换为 ObjectFactory,但不能强制转换为这种类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2019-06-03
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多