Есть ли в Grails предпочтительный / стандартный способ привязки параметров формы к списку объектов домена? - PullRequest
0 голосов
/ 19 марта 2012

У меня есть три класса доменов: MaterialsOfConcern, Material и MaterialStatus, настроенные так:

class MaterialsOfConcern {
     Material material
     MaterialStatus materialStatus
}

Я хотел бы создать форму, в которой пользователю предоставляется статический список материалов, которые уже существуют всистема.Для каждого перечисленного материала они должны выбрать соответствующий MaterialStatus.Есть ли стандартный подход для этого?

Я думал о следующем в gsp:

<g:each var="material" in="${materials}">
    <g:select name="materialStatus[${material.id}].id" from="${MaterialStatus.list()}" value="?" class="many-to-one"/>
</g:each>

Затем в контроллере просто вручную анализирую объект params для получения информации, которая мне нужна.Но я подумал, что должен быть лучший, более стандартизированный способ, используя bindData для объекта Map или Command или тому подобного.

1 Ответ

1 голос
/ 20 марта 2012

Я не уверен, что это действительно лучшая альтернатива.Но Grails действительно предоставляет возможность, когда несколько полей формы с одним и тем же именем группируются как список.

Используя ваш пример, вы можете просто передать список статусов материалов вашему контроллеру и затем разрешить их на основе порядка их списков.

<g:each var="material" in="${materials}">  
   <g:select name="materialStatus" from="${MaterialStatus.list()}"/>
</g:each>

Затем вы можете получить список материаловстатусы с использованием механизма params.list.

def statuses = params.list( 'materialStatus' )
materials.eachWithIndex{ material, index -> new MaterialOfConcern( material: material, materialStatus: statuses[ index ] )  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...