Какие удобные приемы для отправки форм Grails? - PullRequest
0 голосов
/ 01 октября 2011

Все знают о передаче параметров в контроллер через HTML-форму:

<g:form action="save">
  <g:textField name="text1" />
</g:form>

И я смутно осознаю, что могу структурировать эти параметры в виде обозначений объектов в Grails:

<g:form action="save">
  <g:textField name="text.a" />
  <g:textField name="text.b" />
</g:form>

С очень небольшим представлением о том, как они структурированы в контроллере (объекты? Hashmaps? Я вспоминаю необходимость использовать .value в какой-то момент, используя последний пример).

Так что я думаю, что этот вопросна самом деле два вопроса:

  1. Как Grails обрабатывает параметры в нотации объектов, как во втором примере?Можете ли вы вставить их в массивы тоже?

  2. Какие еще приемы касаются отправки формы и ее параметров, которые могут сделать формы с очень сложными и итеративными данными тривиальными для обработки в контроллере?Например, ATG позволяет вам связывать поля формы с bean-компонентами и просматривать весь граф свойств , чтобы найти свойство, которое нужно установить.

1 Ответ

0 голосов
/ 02 октября 2011

Вторая нотация "text.a" используется для устранения неоднозначности преобразования данных из свойств в объекты домена. Например, если у вас есть 2 объекта домена, каждый со свойством "a", если вы делаете domObj1.properties = params и domObj2.properties = params, значение будет передано обоим объектам домена, что может быть не тем, что вам нужно. Таким образом, по вашему мнению, у вас должны быть переменные domObj1.a и domObj2.a, а в контроллере grails вы можете создать экземпляр, используя def domObj1 = new DomObj1(params["domObj1"])

Если вы имеете в виду второй вопрос, если вы имеете в виду возможность итерации по объектам, вы вполне можете, используя синтаксис GPath в оболочке $ {}, например проверить код в свойстве id ниже.

<td><g:remoteLink controller="device" action="getDevice" id="${objInstance.prop1.prop2.id}" update="propDetail">${fieldValue(bean: objInstance.prop1, field: "prop1")}</g:remoteLink></td>

В приведенном выше примере также показан ajax способ отправки формы из gils gils.

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