Как поделиться объектами домена на Grails с Ext GWT (GXT)?
Вопрос
Мое приложение логически разделено на сервер, который содержит мои доменные объекты и контроллеры Grails; и клиент, где у меня есть мои классы Ext GWT, которые создают все страницы пользовательского интерфейса.
Для запросов пользовательского интерфейса я использую AJAX-вызов метода контроллера, который возвращает, например, список объектов домена в виде структуры JSON.
Следуя принципу СУХОЙ, я не хотел бы "сериализовать" данные домена в строку JSON на сервере затем десериализуют его на клиенте в другую структуру - я бы хотел воспользоваться уже имеющимся у меня объектом Domain, и мне не нужно менять несколько мест при добавлении , измените или удалите новое поле.
Вопрос: это хороший путь? Р>
Если да, как лучше сделать доменные объекты .groovy доступными на клиентской стороне? Ext GWT Java классы?
Если нет, то почему это плохо и что бы вы посоветовали вместо этого?
Решение
Нет хорошего способа - вам нужен Java-объект, который GWT сериализуем. Единственное реальное решение, которое я вижу, это написать плагин (или добавить к плагину GWT) способ автоматической генерации объекта передачи данных, возможно, с использованием аннотаций в объекте домена grails. Р>
Аналогичный метод используется для автоматической генерации интерфейсов RPCAsync в плагине gwt - см. GwtGrailsPlugin.groovy в каталоге плагинов gwt, строка 133 или около того - начало. Р>
Вы можете подключиться к этому (или просто изменить этот файл напрямую, возможно, проще) и вставить некоторый код для генерации файлов передачи данных. Дополнительным преимуществом может быть то, что вы можете детализировать объект передачи данных, чтобы личные данные (например, пароли!) Не передавались. Р>
Другие советы
Кроме того, вы можете отправить свои данные клиентской стороне в формате json или xml. Вы можете создать REST API для вашего сервера.