2008-10-26 2 views
3

Мое приложение логически разделено на сервер, который содержит объекты и контроллеры домена Grails; и клиент, где у меня есть классы Ext GWT, которые создают все страницы пользовательского интерфейса.Как обмениваться объектами домена на Grails с Ext GWT (GXT)?

Для запросов пользовательского интерфейса я использую вызов AJAX для метода контроллера, который возвращает, например, список объектов домена как структуру JSON.

Следуя принципу DRY, я не хотел бы «сериализовать» данные домена в строку JSON на сервере, а затем де-сериализовать его на клиенте на другую структуру - я хотел бы воспользоваться Доменом объект, который у меня уже есть, мне не нужно менять несколько мест, когда я добавляю, изменяю или удаляю новое поле.

Вопрос в том, что это хороший способ пойти?

Если да, то каким образом можно было бы сделать объекты домена .groovy доступными на «клиентской стороне» Ext GWT Java-классах?

Если нет, то почему это плохо и что бы вы посоветовали вместо этого?

+0

Я голосовал за ваш вопрос, потому что я хочу сделать то же самое. – 2009-06-15 20:03:58

ответ

1

Не существует хорошего способа - вам нужен объект Java, который является сериализуемым GWT. Единственное реальное решение, которое я вижу, - это написать плагин (или добавить к плагину GWT) способ автогенерации объекта передачи данных, возможно, используя аннотации в объекте домена grails.

Аналогичный метод используется для автогенерации интерфейсов RPCAsync в плагине gwt - см. GwtGrailsPlugin.groovy в каталоге плагина gwt, строка 133 или около того - это начало.

Вы можете подключиться к этому (или просто изменить этот файл напрямую, возможно, проще) и вставить некоторый код для генерации файлов передачи данных. Дополнительным преимуществом может быть то, что вы можете гранулировать объект передачи данных, чтобы личные данные (например, пароли!) Не передавались.

+0

Спасибо Chii, удивительные идеи. Я посмотрю! – kolrie 2008-10-29 10:04:42

0

В качестве альтернативы вы можете отправить свои данные клиенту как json или xml. вы можете создать REST api для вашего сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^