是否可以在单个页面上触发不同的HTTP方法,只有一个表单?

时间:2013-01-30 00:27:58

标签: spring spring-mvc http-method

到目前为止,我已经使用jQuery AJAX(或XMLHttp)和HiddenHttpMethodFilter处理PUTDELETE HTTP方法,包括GETPOST (目前我正在使用Spring 3.2.0)。我有一个关于使用这些方法的一般性问题。

基本上,我想使用 single <在同一页面(JSP)上执行INSERTEDITUPDATEUPDATE等基本数据库操作/ strong>形式。在这种情况下,是否可以通过适当的操作触发这些方法?

例如,当用户按下删除按钮时,应该引发DELETE方法,当他按下更新按钮时,应按下插入按钮,触发PUT方法,应该调用POST方法,并且在检索数据时,应该使用GET方法,因此应该调用在控制器中映射的适当方法(再次在同一页面上使用单个表单{{ 1}})。

当然,可以通过AJAX实现,但在任何地方使用AJAX都是不合适的。

也许我错过了RESTFul API的一些重要方面。显然,这是不可能的(不知不觉)。实际答案是什么?


修改

假设我想处理<form:form>...</form:form>方法,那么Spring表单将如下所示。

PUT

及其生成的HTML如下所示。

<form:form id="mainForm" name="mainForm" method="put" action="Temp.htm" commandName="tempBean" enctype="multipart/form-data">
    <input type="submit" id="btnSubmit" name="btnSubmit" value="Submit"/>
</form:form>

隐藏的<form id="mainForm" name="mainForm" action="Temp.htm" method="post" enctype="multipart/form-data"> <input type="hidden" name="_method" value="put"/> <input type="submit" id="btnSubmit" name="btnSubmit" value="Submit"/> </form> 字段会自动添加,以便HiddenHttpMethodFilter

处理<input type="hidden" name="_method" value="put"/>方法

如果我现在需要提升PUT方法,那么表格及其生成的HTML应分别修改如下。

DELETE

生成的HTML

<form:form id="mainForm" name="mainForm" method="delete" action="Temp.htm" commandName="tempBean" enctype="multipart/form-data">
   <input type="submit" id="btnSubmit" name="btnSubmit" value="Submit"/>
</form:form>

在运行时动态的可能性有多大?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

<form id="mainForm" name="mainForm" action="Temp.htm" method="post" enctype="multipart/form-data">
    <input type="hidden" name="_method" value="delete"/>
    <input type="submit" name="btnUpdate" value="Update"/>
    <input type="submit" name="btnDelete" value="Delete"/>
    <input type="submit" name="btnCreate" value="Create"/>
</form>

然后在您的处理页面上,查看提交表单的按钮。