EXT GWT + Java EE - PullRequest
       13

EXT GWT + Java EE

4 голосов
/ 17 ноября 2009

Мой вопрос: каков наилучший способ отправки данных моих аннотированных объектных компонентов Java EE в клиентской стороне, чтобы использовать его в сетке, например? Конечно, я мог бы сделать клиентские модели с расширенной BaseModel для каждой сущности вручную, но мне интересно, что может быть наилучшим здесь. Мне нужно пошаговое руководство, если это возможно.

Ответы [ 3 ]

3 голосов
/ 17 ноября 2009

Я пользуюсь ext-gwt (gxt) уже около года и чувствую вашу боль!

Из того, что я узнал до сих пор, кажется, что существует 3 стратегии для передачи bean-компонентов между клиентом и сервером:

Вот обзор каждой стратегии:

  1. Создайте клиентский pojo / bean, который расширяет BaseModel для каждый объектный компонент на стороне сервера / компонент pojo / entity.
  2. Обмен pojo / bean's между клиентом и Сервер
  3. Конвертировать серверную часть pojo / bean в JSON перед отправкой клиенту и затем используйте объекты Javascript (json) на стороне клиента.

Конечно, есть компромиссы для каждого.

Стратегия # 1 прекрасно интегрируется в gxt. Вы можете использовать встроенные в gxt магазины и привязки. Это стратегия, которую я использовал в производственном приложении, и она сработала, но я считаю утомительным дублирование bean-компонентов на клиенте и сервере. Лично я также обнаружил, что механизм хранения / привязки extjs (и gxt's) может быть слишком сложным и его трудно расширить для угловых случаев.

Стратегия № 2: Это стратегия, которую я, скорее всего, буду использовать в своем следующем проекте gxt. Недостатком является то, что вы должны сделать свою собственную форму и привязку сетки в gxt на клиенте. Но плюс в том, что вы можете делиться всеми своими бобами / pojos. Вот краткий обзор деталей реализации:

В вашем дереве src на стороне сервера добавьте файл .gwt.xml в корневой пакет, содержащий ваши серверные классы pojo / bean. Например: я создал этот файл с именем "gwt-models.gwt.xml" в com.daveparoulek.gwt.server.models

<module rename-to='gwt-models'>
    <inherits name='com.google.gwt.user.User' />
    <source path="client" />
</module>

В приведенном выше примере бины фактически находятся внутри com.daveparoulek.gwt.server.models.client.

Получив эту настройку, вы можете настроить свой клиентский проект gwt так, чтобы он включал код src в com.daveparoulek.gwt.server.models, добавив тег «наследовать» в файл gwt.xml вашего клиентского проекта gwt, например:

<inherits name="com.daveparoulek.gwt.server.models" />

Стратегия № 3: После просмотра нескольких выступлений от Google на gwt, похоже, это их предпочтительный способ работы с объектами на стороне клиента. Хотя это приводит к созданию типа наложения json для каждой серверной части pojo / bean. Это также не совсем вписывается в мир GXT. Нажмите здесь , чтобы получить довольно хорошее представление об этой концепции.

0 голосов
/ 23 апреля 2011

BeanModelFactory - это огромная трата вашего времени. Согласно справочной документации Sencha , вы можете просто вызвать getFactory для того, что BeanModelFactory возвращает из вызова статического метода get(). Следуя их примеру, это возвращаемое значение оказывается экземпляром самого класса BeanModelFactory, который имеет не реализованный (абстрактный) метод getFactory().

Так что вы получите хороший нулевой указатель из ниоткуда. Спасибо ни за что.

Я бы придерживался стратегии № 1.

0 голосов
/ 17 ноября 2009

Я не специалист, но кажется, что люди используют Gilead (у которого есть учебник) + GWT + GXT, чтобы облегчить процесс.

...