Почему Grails добавляет в форму скрытый флажок - и что он с ним делает? - PullRequest
8 голосов
/ 20 января 2010

У меня есть флажок на моей странице GSP следующим образом (который был украден непосредственно из скаффолдингового кода "создать" для моего объекта домена) ...

<tr class="prop">
<td valign="top" class="name">
  <label for="isSelling"><g:message code="person.isSelling.label" default="Is Selling" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: personInstance, field: 'isSelling', 'errors')}">
    <g:checkBox name="isSelling" value="${personInstance?.isSelling}" />
</td>
</tr>

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

<tr class="prop">
<td valign="top" class="name">
  <label for="isSelling">Is Selling</label>
</td>
<td valign="top" class="value ">
    <input type="hidden" name="_isSelling" />
    <input type="checkbox" name="isSelling" id="isSelling"  />
</td>
</tr>

Мои вопросы:

  1. почему это там?
  2. что Grails делает с этим?
  3. если я смотрю на значения формы в Javascript, какое входное значение я должен принять?

Просто проверяя, что происходит, когда на моей странице устанавливается и отключается флажок, выясняется, что скрытый игнорируется, поэтому я предполагаю, что при выполнении действия отправки происходит некоторая хитрая обработка, которая рассматривает _isSelling и Продажа для магических целей. Кто-нибудь знает, что делает Grails?

Спасибо

1 Ответ

12 голосов
/ 20 января 2010

Это весенняя вещь. Он добавляет этот флажок, чтобы не отмеченные флажки были подотчетны. Некоторые браузеры не будут выдавать информацию о снятом флажке, поэтому для предотвращения ошибок привязки добавлен скрытый блок.

...