SpringMVC - 在jsp中发送嵌套表单

时间:2014-12-08 12:42:21

标签: java forms jsp

我有一个表单( addPassForm ),它在JSP页面中以另一种形式( addStoreFrom )嵌套。如何将 addPassForm 表单发送给控制器?

当我尝试发送 addPassForm 表单时, addStoreFrom 表单会发送。

    <s:url value="/addStore" var="urlAddStore"/>
    <form:form id="addStoreFrom" modelAttribute="newStore" action="${urlAddStore}" method="POST">
        <table border="1">
            <tbody>
                <tr>
                    <td><form:label path="title">Title*</form:label></td>
                    <td><form:input path="title"/></td>
                </tr>
                ...

                <tr>
                    <s:url value="/addPassForm" var="addPassForm"/>
                    <form:form id="addPassForm" action="${addPassForm}" method="post">
                        ...
                        <td>
                            <input type="submit" value="Add"/>
                        </td>
                    </form:form>
                </tr>
                <tr>
                    <td><input type="submit" value="Save"/></td>
                    <td/>
                </tr>
            </tbody>
        </table>
    </form:form>

3 个答案:

答案 0 :(得分:1)

这只是因为嵌套表单不是有效的HTML模式。浏览器只是忽略内部<form></form>标记,只能看到一个表单。参考:Is it valid to have a html form inside another html form?

这不是JSP问题(也不是Java问题!),而只是一个不正确的HTML问题。您必须使用连续的表单而不是嵌套的表单(或其他建议的用户javascript)

连续形式的示例:

<s:url value="/addStore" var="urlAddStore"/>
    <table border="1">
        <tbody>
            <form:form id="addStoreFrom" modelAttribute="newStore" action="${urlAddStore}" method="POST">
            <tr>
                <td><form:label path="title">Title*</form:label></td>
                <td><form:input path="title"/></td>
            </tr>
            ...

            <tr>
                <td><input type="submit" value="Save"/></td>
                <td/>
            </tr>
            </form:form>
            <tr>
                <s:url value="/addPassForm" var="addPassForm"/>
                <form:form id="addPassForm" action="${addPassForm}" method="post">
                    ...
                    <td>
                        <input type="submit" value="Add"/>
                    </td>
                </form:form>
            </tr>
        </tbody>
    </table>

答案 1 :(得分:0)

在javascript中显式调用submit()函数。添加一个函数并将其绑定到onclick的添加按钮。<input type="button" value="Add" onclick="submitAddPassForm()"/>。在javasrcipt中只需使用:

function submitAddPassForm(){
   $('#addPassForm').submit();
}

答案 2 :(得分:0)

你可以只做一个ajax post调用而不是表单提交