1

私は単純なSpringプログラムを持っています。バックエンドはRestful Webサービスを備えたSpring MVCで、フロントエンドは純粋なHTML + ajaxです。

私の問題は、次を使用して HTTP 要求パラメーターを pojo にマップしようとすると、常に失敗することです。

@RequestMapping(value = "/books", method = RequestMethod.PUT)
    public @ResponseBody
    String updateBook(BookInfo book) 

ここでは、変更操作であるため、PUT メソッドを使用します。例外はありませんが、 book オブジェクトには何も注入されません。

同じ HTTP 要求パラメーターを使用して、メソッドを POST に変更し、クライアントが POST 経由で送信すると、成功します。

@RequestMapping(value = "/books", method = RequestMethod.POST)
public ResponseEntity<String> addBook(BookInfo book) 

今回の本はいつもいっぱいになります。

PUT と POST に違いがあるのはなぜですか? それとも戻り型の問題ですか?(1 つは ResponseBody、もう 1 つは ResponseEntity)? または、PUT を使用する場合、pojo は永続的なコンテキストにある必要がありますか?

問題をどのように調査すればよいですか?

4

1 に答える 1

0

設定やコードの問題ではないと思います。Spring Frameworkには、すべてのメソッドを提供するHiddenHttpMethodFilterという名前のフィルターが用意されていますが、最初はPOSTリクエストを実行しますが、_methodフォームフィールドは非表示になっています。そして、このフィルターはこの隠しフィールド値を読み取り、それに応じてメソッド値を変更します。詳細については、このリンクを参照してください。このフィルターを使用して構成すると、問題が解決すると思います。

これがお役に立てば幸いです。乾杯。

于 2012-06-20T05:23:06.683 に答える