繁体   English   中英

添加隐藏字段时,不会提交Spring表单

[英]Spring form does not submit when hidden field is added

我在jsp文件中有以下表单:

form.jsp

<table>
<form:form modelAttribute="command" action="daoselect.app">
    <tr>
        <td>Store this data</td>
        <td><form:checkbox path="query"/>
    </tr>
    <form:hidden path="list"/>
    <tr>
        <td colspan="2" align="right"><input type="submit" value="Submit" /></td>
    </tr>
</form:form>

这是我的app-servlet.xml文件的样子:

APP-servlet.xml中

<bean name="/daoselect.app" class="de.xx.DAOSelectController">
    <property name="commandClass" value="de.xx.DAOSelectCommand"/>

    <property name="xmlservice" ref="GuestBookDataXML"/>
</bean>

这就是DAOSelectCommand.java文件的样子

public class DAOSelectCommand {

private boolean query = false;
private List<GuestBookData> list;

public List<GuestBookData> getList() {
    return list;
}

public void setList(List<GuestBookData> list) {
    this.list = list;
}

public boolean getQuery() {
    return query;
}

public void setQuery(boolean query) {
    this.query = query;
}

public DAOSelectCommand() {

}


/*This constructor is used before loading the jsp file to add the list data to the hidden field*/
public DAOSelectCommand(List<GuestBookData> t) {
    this.list = t;
}

我遇到的问题是,当我添加<form:hidden path="list"/>字段并且浏览器试图加载daoselect.jsp文件时,不会执行DAOSelectController类的onSubmit函数。 如果我删除这个隐藏字段,则onSubmit函数正常执行。

为什么会这样?

问题是生成的<input type=hidden>元素位于DOM树中的“意外”位置; 浏览器试图弄清楚这一点,但最终将元素重新定位到表外部,这将它放在表单之外。 这会导致以下<input type=submit>的解释出现各种问题。 准确地确定将所有内容都放入该状态会发生什么变得棘手,并且实际上并不值得,因为修复是将<form:hidden> 移动<form:checkbox>旁边,这是<tr> ,并将<form:form>移到<form:form> 这将元素放在适当的DOM上下文中,用于那些类型的元素,阻止浏览器几乎不必努力弄清楚什么意思(并鼓励它做对了......)

<form:form modelAttribute="command" action="daoselect.app">
<table>
    <tr>
        <td>Store this data</td>
        <td><form:checkbox path="query"/>
            <form:hidden path="list"/></td>
    </tr>
    <tr>
        <td colspan="2" align="right"><input type="submit" value="Submit" /></td>
    </tr>
</table>
</form:form>

此外,始终关闭<td><table>元素; 它避免了各种各样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM