Наилучшая практика обработки обнуляемого Integer в приложении удаленного взаимодействия Java - Flex? - PullRequest
1 голос
/ 10 февраля 2011

У меня есть Приложение, состоящее из части Java Server и клиента Flash / Flex, оба взаимодействуют через BlazeDS.Чтобы иметь одинаковые типизированные объекты на обоих сайтах, я использую генератор кода GAS3 (используется flex-mojos).

Но теперь я сталкиваюсь с проблемой обработки обнуляемых целых чисел.Проблема в том, что у меня есть объект (A), который содержит идентификатор внешнего ключа, который ссылается на необязательный объект B. - Но я отправляю идентификатор только клиенту flex.

На сайте Java это легко:

class A {
  private Integer bFk;
  getter/setter
}

Но на стороне гибкого клиента bFk имеет тип int.И Flash int не может быть нулевым.Таким образом, механизм удаленного взаимодействия преобразует нулевое целое число Java в 0. После отправки его обратно на сервер Java bFk становится равным 0 даже на стороне Java.- Это неприемлемо, потому что мне нужно разделить 0 и ноль.

Моя первая рабочая среда - использование не Integer на стороне Java, а нового класса NullAbleID, который работает немного как обертка/ adaptor, который оборачивает внутренний int, где -1 представляет ноль (я могу использовать -1 для ноль, потому что реальный идентификатор будет отрицательным).Но когда я использую это, это означает, что я должен заменить все идентификаторы Java Integer на этот класс NullAbleID.

Поскольку я считаю, что я не первый, кто сталкивается с этой проблемой, я прошу вас найти лучшее решениеобщий вопрос: как представить обнуляемое целое число в сценарии удаленного взаимодействия Java - Flex?

(мне известен вопрос: flex-null-integer , нодаже если это та же проблема, вопрос касается другой темы.)

1 Ответ

2 голосов
/ 11 февраля 2011

Одна из идей - использовать значение флага. Что-то вроде -1 или NaN.

Посмотрите на эту ошибку: https://bugs.adobe.com/jira/browse/BLZ-74 - как вы можете видеть, это рассматривается как ограничение языка и не будет исправлено путем назначения NaN (как некоторые предлагали).

Если вы хотите использовать NaN-подход самостоятельно, проверьте блог Farata по адресу http://flexblog.faratasystems.com/2010/01/07/how-to-keep-numeric-null-value-from-turning-into-zeros-in-blazeds. Они говорят об AS-> преобразовании Java, но, посмотрев комментарии, вы найдете решение для Java-> AS

Я бы держался подальше от изменения всех целых чисел с помощью класса-оболочки, мне не нравится этот подход, но это тоже решение.

...