提问人:Simon 提问时间:1/20/2010 更新时间:1/20/2010 访问量:3397
为什么 grails 会在表单中添加一个隐藏的复选框 - 它有什么作用?
Why does grails add a hidden checkbox to a form - and what does it do with it?
问:
我的 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>
我的问题是:
- 为什么会在那里?
- Grails用它做什么?
- 如果我正在查看 Javascript 中的表单值,我应该采用哪个输入值?
只是检查在我的页面中打开和关闭复选框时会发生什么,似乎隐藏的复选框被忽略了,所以我想象当提交操作发生时会进行一些狡猾的处理,该操作会查看_isSelling并出于某种神奇的目的进行销售。有人对 Grails 在做什么有任何见解吗?
谢谢
答:
12赞
Brandon
1/20/2010
#1
那是春天的事情。它添加了该复选框,以便对未选中的框负责。某些浏览器不会推送有关未选中框的任何信息,因此会添加隐藏框以防止绑定错误。
评论
0赞
Simon
1/20/2010
绑定错误何时出现?您的意思是当页面正在呈现还是在提交时以 POST/GET 返回服务器?如果是提交,那么我认为 HTML 表单定义忽略了隐藏元素,所以我看不出它有什么帮助。
2赞
Brandon
1/21/2010
我的意思是当表格提交时。隐藏元素不会被忽略 - 它们最常见的用例是在表单跨越多个页面时维护无状态服务器。“DISABLED”属性将阻止提交元素。htmlhelp.com/reference/html40/forms/input.html
评论