为什么grails会为表单添加一个隐藏的复选框 - 它对它有什么作用?

Sim*_*mon 8 grails input gsp

我的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>
Run Code Online (Sandbox Code Playgroud)

这很好用,除非我查看结果表单中的元素,我有一个隐藏的复选框和真正的复选框...

<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>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 为什么会这样?
  2. Grails用它做什么?
  3. 如果我在Javascript中查看表单值,我应该选择哪个输入值?

只是检查在我的页面中打开和关闭复选框时会发生什么,看起来隐藏的一个被忽略,所以我想象当发生提交动作时会发生一些狡猾的处理,这些处理看起来是_isSelling而且是出售给某些人神奇的目的.任何人都对Grails正在做什么有所了解?

谢谢

Bra*_*don 12

那是一个春天的事情.它添加了复选框,以便未选中的框对其负责.某些浏览器不会推送有关未选中框的任何信息,因此会添加隐藏框以防止绑定错误.

  • 我的意思是提交表单时.隐藏的元素不会被忽略 - 最常见的用例是在表单跨越多个页面时维护无状态服务器.'DISABLED'属性将阻止提交元素.http://htmlhelp.com/reference/html40/forms/input.html (2认同)