【问题标题】:Why does grails add a hidden checkbox to a form - and what does it do with it?为什么 grails 会在表单中添加一个隐藏的复选框 - 它是做什么用的?
【发布时间】:2010-01-20 14:12:18
【问题描述】:

我的 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 在做什么有任何见解吗?

谢谢

【问题讨论】:

    标签: grails input gsp


    【解决方案1】:

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

    【讨论】:

    • 什么时候出现绑定错误?你的意思是当页面被渲染或在 POST/GET 上返回服务器时提交?如果是提交,那么我认为 HTML 表单定义忽略了隐藏元素,所以我看不出它有什么帮助。
    • 我的意思是表单提交的时候。隐藏元素不会被忽略 - 它们最常见的用例是在表单跨越多个页面时维护无状态服务器。 'DISABLED' 属性将阻止元素被提交。 htmlhelp.com/reference/html40/forms/input.html
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2012-10-09
    • 2010-09-21
    相关资源
    最近更新 更多