1

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

基本上,我想使用单个表单在同一页面 (JSP) 上执行基本的数据库操作,例如 、INSERT和。在这种情况下,是否可以在适当的操作中触发这些方法?EDITUPDATEUPDATE

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

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

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


编辑:

假设,我想处理该PUT方法,那么 Spring 表单将如下所示。

<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>

其生成的 HTML 如下所示。

<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>

隐藏<input type="hidden" name="_method" value="put"/>字段被自动添加到处理PUT方法HiddenHttpMethodFilter


如果我现在需要提出该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>

生成的 HTML

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

在运行时动态执行此操作的可能性有多大?

4

1 回答 1

0

You could do something like:

<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>

Then on your processing page just check to see which button submitted the form.

于 2013-01-30T00:32:33.047 回答