Spring表单标记复选框(form:checkbox)隐藏字段未发送到服务器

Spring forms tag checkbox (form:checkbox) hidden field not sent to server?

本文关键字:字段 隐藏 服务器 checkbox 表单 复选框 form Spring      更新时间:2023-09-26

我有一个使用JQuery 2.1.3和Spring MVC 4.1.3的表单。表单上有一个复选框,它会导致Spring创建一个隐藏字段并将其添加到我的表单中。这是正常的、预期的Spring行为,但是,隐藏元素似乎没有被传递回服务器。检查Chrome开发工具中的POST,我可以看到复选框值如果被选中则返回,如果未被选中则不返回。不管怎样,我都看不到隐藏字段的值。

我使用JQuery onclick()处理程序提交表单,并想知道这是否会以某种方式阻碍预期的行为,因为除此之外,我看不到任何问题。这是代码:

JSP来源:

<form:input id="mycheckboxinput" path="mycheckbox" />

生成的HTML:

<input id="mycheckboxinput" name="mycheckbox" type="checkbox" value="true" checked="checked"/>
<input type="hidden" name="_mycheckbox" value="on"/>

JQuery提交代码:

$("#myButton").on("click", function (event) {
    event.preventDefault();
    $("#myForm").attr("action", "alternateaction.do");
    $("#myForm").submit();
});

有什么想法吗?

答案与复选框本身完全无关。我们禁用了表单上的所有控件,然后重新打开复选框。因为"所有其他控件"都包含隐藏字段,所以它们也被禁用,并且没有通过POST发送到控制器。这破坏了Spring的功能,因为它需要这些字段才能工作。因此,当您在正常表单工作流之外使用Javascript关闭和打开字段时,请小心这一点。