Я пользуюсь ext-gwt (gxt) уже около года и чувствую вашу боль!
Из того, что я узнал до сих пор, кажется, что существует 3 стратегии для передачи bean-компонентов между клиентом и сервером:
Вот обзор каждой стратегии:
- Создайте клиентский pojo / bean, который расширяет BaseModel для
каждый объектный компонент на стороне сервера / компонент pojo / entity.
- Обмен pojo / bean's между клиентом и
Сервер
- Конвертировать серверную часть 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. Нажмите здесь , чтобы получить довольно хорошее представление об этой концепции.