Spring MVC での GET @RequestParam からの複雑なオブジェクトの解析
クエリを行うページにフィルター フォームを実装する必要があるシナリオを考えてみましょう。テーブル。フィルター基準は、GET リクエストを通じてコントローラー アクションに送信されます。通常、次の形式で送信されます: http://foo.com/system/controller/action?page=1&prop1=x&prop2=y&prop3=z.
Toこのようなシナリオを処理するには、Spring MVC では通常、各プロパティを個別に取得するために複数の @RequestParam パラメーターを含むコントローラー メソッドを定義する必要があります。
@RequestMapping(value = "/action") public @ResponseBody List<MyObject> myAction( @RequestParam(value = "page", required = false) int page, @RequestParam(value = "prop1", required = false) String prop1, @RequestParam(value = "prop2", required = false) String prop2, @RequestParam(value = "prop3", required = false) String prop3) { ... }
プロパティ prop1、prop2、および prop3 を持つ MyObject クラスを定義しました。パラメータの処理を簡略化するために、すべてのリクエスト プロパティを MyObject のインスタンスに直接バインドすることもできます。
@RequestMapping(value = "/action") public @ResponseBody List<MyObject> myAction( @RequestParam(value = "page", required = false) int page, MyObject myObject) { ... }
複雑なオブジェクトへのバインドは達成できますか?
はい、Spring を使用してリクエストパラメータを複雑なオブジェクトにバインドすることが可能ですMVC.
複雑なオブジェクトにバインドする方法
このバインドを実現するには、オブジェクト パラメーターから @RequestParam アノテーションを削除するだけです:
@RequestMapping(value = "/action") public @ResponseBody List<MyObject> myAction( @RequestParam(value = "page", required = false) int page, MyObject myObject) { ... }
この変更により、Spring MVC はリクエスト パラメーターの値を MyObject インスタンスの対応するプロパティに自動的にバインドします。
以上がSpring MVCでGETリクエストパラメータから複雑なオブジェクトをバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。