2

SpringMVCWebアプリを持っています。その中には、別のリソースからリソースを削除することになっているボタンのあるフォームがあります。

<td>
    <form action="/product-bases/${productBase.id}/positions/${position.id}" method="DELETE">
        <input type="submit" value="delete" />
    </form>
</td>

私のコントローラー:

@Controller
@RequestMapping(value = "/product-bases/{id}/positions")
public class ProductBasePositionController {

    @RequestMapping(value = "/{positionId}", method = RequestMethod.DELETE)
    public ModelAndView delete(@PathVariable Integer productBaseId, @PathVariable Integer positionId) {

したがって、理論的には、サーバーはコントローラーにルーティングする必要があります。しかし、残念ながらそうではないので、投稿;)

私は得ています

HTTP Status 405 - Request method 'GET' not supported

type Status report

message Request method 'GET' not supported

description The specified HTTP method is not allowed for the requested resource (Request method 'GET' not supported).
Apache Tomcat/7.0.19

明らかに、/ position / idのgetはまだ定義されていませんが、なぜ必要なのか、今のところ削除を実行したいと思います。

(また、これをSpring-test-mvcフレームワークからモックサーブレットで実行しようとしていますが、間にtomcatを実装していません。これにより、400-不正なリクエストが発生します。)

だから私はここで何が欠けていますか?

ああ、いくつかのコーナーを切り取るために:post and getは他のリソースで機能するので、残りのセットアップは問題ありません。

起動サーバーは私にさえ教えてくれます:

RequestMappingHandlerMapping [INFO] Mapped "{[/product-bases/{id}/positions/{positionId}],methods=[DELETE],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView our.view.controller.ProductBasePositionController.delete(java.lang.Integer,java.lang.Integer)

私と同じくらい混乱している人はいますか?そうでなければ、私に教えてください!

4

4 に答える 4

6

フォームの送信にはデータをサーバーに送信する方法が必要なため、フォームは経由で送信することも、のみ送信することもできますGETPOSTおそらく、それが広く実装されているとは思えません)。PUT

このDELETEメソッドにはリクエスト本文がないため、フォームアクションでの指定はサポートされていません。

于 2012-07-13T13:45:41.873 に答える
2

web.xmlにHiddenHttpMethodFilterフィルターがありますか?

<filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html#rest-method-conversion

于 2012-07-13T18:10:47.487 に答える
1

エラーメッセージは、ブラウザがDELETEリクエストではなくGETリクエストを実際に送信していることを示しています。

あなたがする必要があるのは:

  • その時点でブラウザがオンになっているWebページのソースを調べ、

  • ブラウザのWebデバッガを使用して、リクエストのURLとメソッドが実際に何であるかを確認します。

于 2012-07-13T13:46:11.453 に答える
0

Microsoft Azureポータルで、認証/承認をオンにすると、Javaアプリでこのエラーが発生しました。それがあなたの場合に同じ問題であるならば、あなたの行動を元に戻してください。

于 2017-02-23T06:28:16.383 に答える