java - 添加隐藏字段时 Spring 表单不提交

标签 java spring jsp jakarta-ee servlets

我的 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"/> 时,DAOSelectController 类的 onSubmit 函数没有执行。字段,并且浏览器正在尝试加载 daoselect.jsp 文件。如果我删除这个隐藏字段,那么 onSubmit 函数就会正常执行。

为什么会发生这种情况?

最佳答案

问题是生成的 <input type=hidden>元素位于 DOM 树中“意外”的位置;浏览器试图理解这一点,但最终将元素重新定位到表格之外,这将其置于表单之外。这使得对以下 <input type=submit> 的解释出现各种问题。 。弄清楚究竟发生了什么让一切进入该状态将会很棘手,而且并不值得,因为修复方法是移动 <form:hidden> 向上<form:checkbox> 旁边,位于 <tr>,并移动 <form:form> 在 table 之外。这会将元素放入此类元素的正确 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>元素;它避免了各种问题。

关于java - 添加隐藏字段时 Spring 表单不提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826768/

相关文章:

java - Spring 批处理 : Invalid Content was found starting with element 'batch:job'

java - 资源$NotFoundException

java - 我看不到应用栏中的项目

spring - IntelliJ runner 上的集成测试通过但在 gradle 上没有通过

spring - 如何在 Amazon AWS Elasticache Redis + Spring Data 上配置驱逐(生存时间)

java - JSTL中计算的jsp中访问JSTL变量

mysql - 在以逗号分隔的列中插入一个值

java - 访问我已上传到 tomcat 服务器的图像

java - Spring 3.1 或更高版本 @RequestMapping 消费/生产

java - for循环生成的多线程不能使用synchronized吗?