gpt4 book ai didi

gwt - 除了破解 Date_CustomFieldSerializer 并重新编译 GWT 之外,还有其他解决方案吗

转载 作者:行者123 更新时间:2023-12-04 12:24:59 25 4
gpt4 key购买 nike

我已经搜索了一段时间关于 java.util.Date 序列化和不同的客户端/服务器语言环境问题。

对于那些不了解此事的人,这里是一个简短的解释:

RPC 中的 GWT 日期序列化是根据您拥有的语言环境完成的。因此,如果客户端和服务器具有不同的区域设置,用户可以输入一个日期,服务器最终将根据其区域设置在数据库中存储其他日期。

这是一种预期行为,在许多情况下似乎是正确的行为。

例如,如果您在纽约的浏览器中安排某个日期/小时的 session ,那么在 SF 中检查 session 时间的人会看到相应的区域设置值是正确的。

那么出生日期呢?在这种情况下,如果你出生在 12 月 5 日,那么中国的某个人读到你出生在 12 月 6 日似乎并不准确。

有些人说一种解决方案可能是使用字符串而不是日期,但我不这么认为,主要是因为例如你不能添加或减去字符串。

所以我认为解决这个问题的最好方法是自定义序列化,但不幸的是 GWT 提供了自己的 Date_CustomFieldSerializer .

对于我所读到的内容,唯一的解决方案是制作您自己的此文件版本并重新编译 GWT 源代码。
我不想这样做,所以这就是为什么我要问是否有人知道更好的解决方案,或者 GWT 人员是否正在计划例如一些插件序列化基础结构以用于 future 版本。

提前致谢。
丹尼尔

最佳答案

一个 java.util.Date代表某个特定的时刻。你出生在一个特定的时刻;在您的时区可能是 12 月 5 日,但在中国是 12 月 6 日,这不会改变您出生的确切时刻。

似乎您想要存储“日-月-年”三元组而不是特定的瞬间。如果是这种情况,则将其存储为三元组(可能序列化为字符串),而不是 java.util.Date ;换句话说,为工作使用正确的工具。

你说你认为这是错误的,因为“你不能添加或减去字符串”。好吧,您也不添加或减去日期。如果你想用日期做一些计算,那么要么意味着你实际上想要存储一个日期(并接受中国人看到你出生在 12 月 6 日这一事实,因为那是你恰好出生的日期他的时区,而不是 12 月 5 日,也就是你所在时区的日期),或者你想暂时将你的 DMY 三元组转换为一个日期(并进行近似计算,导致你的中国 friend 提前一天祝你生日:十二月当您所在的时区仍为 12 月 4 日时,在他的时区中排名第 5)。
这很容易,使用 DateTimeFormat ,将日期序列化/解析为 DMY(例如 yyyy-MM-dd)并始终使用当前时区。

顺便说一句:说 RPC 中的 GWT 日期序列化是根据您所拥有的语言环境完成的并不准确:GWT 序列化日期的时间戳(自纪元以来的秒数,由 java.util.Date#getTime() 返回),特别是 不是 时区相关。
更不用说语言环境!= 时区。

关于gwt - 除了破解 Date_CustomFieldSerializer 并重新编译 GWT 之外,还有其他解决方案吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10799884/

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