ページ上のエンティティを削除リンク(href)または削除ボタン(フォーム)で削除しようとしています。私は、これはそれを行う上意向JSPコードである代わりに、「POST」のプログラミングHttpDelete用のSpring MVCコントローラとjsp
を「GET」のリンクコールので、削除ボタンを使用しています:
<td><form:form method="DELETE" action="/client/invoices/${invoice.id}"><input type="submit" value="delete"></form:form></td>
結果のHTMLはこれです:
<td><form id="command" action="/client/invoices/9" method="post"><input type="hidden" name="_method" value="DELETE"/><input type="submit" value="delete"></form></td>
だから、私はとても幸せです。これはDELETEアクションであることを示す_methodを持っています。私のコントローラコードは以下の通りです:
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public String delete(@PathVariable("id") Long id, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) {
invoiceServiceHibernate.removeInvoice(id);
return "redirect:/invoices";
}
このメソッドは呼び出されません。私はインボイスを作成し、削除ボタンをクリックする代わりに請求書を作成するPOSTを行う別の方法があります。私の推測では、コントローラはPOSTリクエストとしてサーブレットを調べ、この場合は新しい請求書を作成するPOSTリクエストを処理する最初のメソッドを使います。
私はこれを/invoice/id
にしてPOST, PUT, DELETE, GET
を使用したいと思いますが、Spring MVCを使用してコントローラーでコード化する方法がわかりません。
私はこれが
@RequestMapping(value = "/{id}/delete", method = RequestMethod.POST)
注意、RequestMethod.POSTような/invoices/id/delete
として「動詞」を追加し、コントローラを設定することによって動作するように取得することができていますが、マップの値が明示的に/id/delete
を持っているので、それがありません/invoices
と/invoices/id
にマッピングされているデフォルトのPOSTは使用しないでください。
私は明らかに希望です。誰かが提案やサンプルコード(強く推奨)を持っているなら、私はそれを感謝します。 Link1 Link2 Link3
同じ問題に直面しています。私はあまりにもフィルタを追加しました。しかし、削除メソッドは、POSTに変換されたsill。 – shalu