面对GWT数据序列化的问题

时间:2011-01-19 06:37:29

标签: serialization gwt date gwt-rpc

这与问题类似:GWT Data Serialization

我正在使用Date Object @ my client,

这是我试过的, 我创建了一个Date对象,在Label中显示了它的 toString(),并通过Rpc将其传递给服务器,其返回值与Date的 toString()

相同

传递的价值:

Date value = new Date(2011, 0, 19);

输出@托管/开发模式:(http://127.0.0.1:8888/MyApplication.html?gwt.codesvr=127.0.0.1:9997

客户端读取:1月19日00:00:00 IST 3911服务器读取:1月19日00:00:00 IST 3911

输出@生产模式(在GWT编译之后):( http://127.0.0.1:8888/MyApplication.html

客户阅读:1月19日00:00:00 GMT + 530 3911服务器读取:1月19日00:00:00 IST 3911

相同计算机中运行的Jboss中输出@部署:

客户阅读:1月19日00:00:00 GMT + 530 3911服务器读取:1月18日星期三18:30:00 GMT 3911

令人难以置信的是,它的同一台机器,因此区域设置等理想上应该是相同的,仍然是@托管模式我看到客户端发送IST服务器接收IST,@生产我看到客户端发送GMT服务器接收IST和@Jboss服务器部署我看到客户端发送GMT并且服务器接收GMT的时间少了一天!!

服务器收到一天的事实是非常严重影响我的应用程序业务逻辑,基本上我正在使用iBatis从数据库填充我的pojos并将其发送到客户端和客户端我正在使用GXT向我显示一个UI用于日期选择。

使用String for date不适合我,因为它是应用程序核心pojos的一个重大变化,所有数据库选择和插入查询只是因为我的客户端库不能很好地处理Dates。

有没有人可以替代这个?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用DateTimeFormat来构建在机器之间明确区分的东西。格式如'yyyy-MM-dd HH:mm:ss ZZZZ'而不是使用toString()

Date today = new Date();
DateTimeFormat fmt = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss ZZZZ");
GWT.log(fmt.format(today));