3

サーバー上のリソースを削除しようとしていますが、Web ページの通常のリンクから削除したいと考えています。

リンクをクリックしたときにサーバーに DELETE リクエストを送信できないことを理解しているので、これを回避しようとしました

<form id="aux_form" action="environment/">
   <input type="hidden" name="_method" value="delete">
   <input type="hidden" name="id" value="${env.id}">
</form>

私のSpringコントローラーメソッドには注釈が付けられています

@RequestMapping(value = "/environment/", method = RequestMethod.DELETE)

しかし、「指定された HTTP メソッドは、要求されたリソースに対して許可されていません (要求メソッド 'GET' はサポートされていません)」というエラー メッセージが表示されます。そのため、コントローラー メソッドが呼び出されず、削除要求が適切にマップされていないことがわかります。

この削除リクエストを適切に送信する方法を教えていただければ幸いです。

ありがとう :)

4

2 に答える 2

4

これはうまくいくはずです:

このフィルターを web.xml ファイルに登録します。これにより、フォームの _method 非表示パラメーターがDELETEHttp 要求に変換されます。

<filter>
    <filter-name>HttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>HttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

これで、このタイプのハンドラーでリクエストを処理できます。

@RequestMapping(value = "/environment/", method = RequestMethod.DELETE)
于 2012-08-14T12:47:22.410 に答える
0

タグから DELETE リクエストを送信することはできません<form>。あなたのコードでは、まだGETとして送信しています。

ajax ベースのソリューションを適用する必要があります。

$.ajax({
    url: '/environment/',
    type: 'DELETE',
    success: function(result) {
        // Do something with the result
    }
});

@RequestMappingまたは、注釈を GET にマップします。

于 2012-08-14T08:08:05.570 に答える