Как смешать несколько доменных объектов в одной форме? - PullRequest
0 голосов
/ 31 января 2011

У меня есть 3 домена: - EligibilityInclusion - EligibilityExclusion - EligibilitySummary

Я также создаю eligibility.gsp (смешайте использование 3-х шаблонов: _inclusion, _exclusion, _summary; я также использую вкладку JQueryUI для отображения каждого домена на одной вкладке).

Все хорошо для просмотра, но теперь я хотел бы использовать только один контроллер для создания, редактирования, просмотра и отображения.
Как я могу обрабатывать 3 домена только через один контроллер?
(например, я хотел бы использовать EligibilityController для обработки моих 3 доменов)

Как лучше всего использовать:
- связывание нескольких объектов? - использовать объекты команд?

Ответы [ 2 ]

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

К сожалению, объекты команд не помогают с моделью ввода для представления, они специально разработаны, чтобы помочь модели вывода для привязки и проверки параметров запроса. Однако вы можете использовать свою собственную модель представления на основе командного объекта, если вы готовы углубиться в метапрограммирование, чтобы добиться привязки данных для создания модели представления. Вот основной подход. Следующий код создает объект Command, который затем можно передать в качестве модели представлению в контроллере:

class ItemCommand {
 // attribute declarations ...

public void bindData(def domainInstance){
    domainInstance.properties.keySet().each { prop ->
        if(prop == "class"){
            // not needed
        } else if(prop == "metaClass") {
            // not needed
        } else if(this.properties.containsKey(prop)){
            this."${prop}" = domainInstance."${prop}"
        }
    }
}

Это позволит вам связывать данные из разных объектов домена, вызывая bindData для каждого из объектов домена.

Это суть решения, которое я использую. Вам нужно будет хранить идентификаторы различных объектов домена (и атрибут версии) как скрытые поля, если вы собираетесь обновлять объекты домена.

0 голосов
/ 01 февраля 2011

Вы не можете просто отправить несколько объектов, если некоторые из них имеют одинаковые имена полей, верно?

Я бы попытался объединить 3 объекта в одну Команду с 3 полями, например: inclusionInstance1, inclusingInstance2, summaryInstance1 и полями имен в gsp-s соответственно, например name='command.inclusionInstance1.name'. Назначение command.properties = params должно работать при отправке формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...