我有一个表单( 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>
答案 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调用而不是表单提交