Столкнувшись с проблемой сериализации данных GWT - PullRequest
0 голосов
/ 19 января 2011

Это похоже на вопрос: Сериализация данных GWT

Я использую объект Date @ мой клиент,

Вот что я пробовал, я создал DateОбъект показал toString () в метке и передал его на сервер через Rpc, возвращаемое значение которого равно той же самой дате toString ()

передано:

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

Выходные данные @ Режим размещения / разработки: (http://127.0.0.1:8888/MyApplication.html?gwt.codesvr=127.0.0.1:9997)

Клиент читает: четверг 19 00:00:00 IST 3911 Сервер читает: чт янв 19 00:00:00 IST 3911

Выход @ Режим производства (после компиляции GWT): (http://127.0.0.1:8888/MyApplication.html)

Клиент читает: четверг 19 00:00:00 GMT + 530 3911Сервер читает: Чт 19 января 00:00:00 IST 3911

Вывод @ Развертывание в Jboss, работающем на той же машине:

Клиент читает: Чт 19 января 00:00:00 GMT + 530 3911 Сервер читает: Ср 18 января 18:30:00 GMT 3911

Что поражает, так это то, что это та же самая машина и, следовательно, локаль и т. Д.в идеале должно бытьТо же, все еще в режиме @ hosted. Я вижу, что клиент отправляет IST-сервер, получающий IST, @production. Я вижу, что клиент отправляет GMT, сервер получает IST, а сервер @Jboss развертывается.* Тот факт, что сервер получает на один день меньше, очень серьезно влияет на бизнес-логику моего приложения, в основном я использую iBatis, который заполняет мои pojos из базы данных и отправляет их клиенту, а на клиенте я использую GXT, который отображает мне пользовательский интерфейс для датыselection.

Использование String для даты мне не подходит, так как это серьезное изменение в основных приложениях, все запросы на выборку и вставку базы данных только потому, что моя клиентская библиотека плохо обрабатывает даты.

У кого-нибудь есть альтернатива этому?

1 Ответ

2 голосов
/ 19 января 2011

Вы можете попытаться использовать DateTimeFormat для создания чего-то однозначного среди машин, несмотря на локали. Отформатируйте как «гггг-ММ-дд ЧЧ: мм: сс ZZZZ» вместо использования toString ()

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