私はSpringのMVCデータバインディング機能に関する小さな質問があります。フォームデータとXMLリクエストボディの両方を受け入れるためにSpringでエンドポイントを設定するには?
@Controller
@RequestMapping("/foo")
public class FooController() {
// … some init stuff //
@RequestMapping(value = "/{id}/edit.{format}", method = RequestMethod.POST)
public ModelAndView editFoo(@RequestBody FooItem foo, @PathVariable("format") String format) {
// some code here to edit the FooItem //
}
}
私は、フォームデータだけでなく、このメソッドに対するXMLを投稿できるようにしたい: は、私は、次のコントローラクラスを持っています。そのために私はapplicationContext.xml
に2つのメッセージコンバータを追加しました:デフォルトのformHttpMessageConverter
とXStreamマーシャラー。
これはうまくいきますが、私は@RequestBody
を使用してURLに対するフォームデータを送信すると、サーバーが415エラーで応答するという問題があります。この注釈を削除すると、フォームデータはうまく機能し、Springはオブジェクトを作成しますが、XMLを投稿すると空のオブジェクトが生成されます。
これを回避する方法はありますか、または両方の受信フォーマットを処理するには2つの方法が必要ですか?
ありがとうございます!
どのようにフォームデータを投稿しますか?要求に 'Content-Type:application/x-www-form-urlencoded'ヘッダがあることを確認してください。 – axtavt
のデータは標準のHTMLフォームでポストされているので、 Content-Typeヘッダーは、 "Application/x-www-form-urlencoded" – Markus