1. ホーム

[解決済み】Spring MVC:複雑なオブジェクトをGET @RequestParamにする

2022-04-04 09:23:49

質問

テーブル上のオブジェクトをリストアップするページがあり、テーブルにフィルタをかけるためのフォームを設置する必要があるとします。フィルタは、次のようなURLにAjax GETとして送信されます。 http://foo.com/system/controller/action?page=1&prop1=x&prop2=y&prop3=z

そして、Controllerにたくさんのパラメータを持たせるのではなく、以下のようにします。

@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) { ... }

そして、私がMyObjectを次のように持っていると仮定します。

public class MyObject {
    private String prop1;
    private String prop2;
    private String prop3;

    //Getters and setters
    ...
}

みたいなことをしたい。

@RequestMapping(value = "/action")
public @ResponseBody List<MyObject> myAction(
    @RequestParam(value = "page", required = false) int page,
    @RequestParam(value = "myObject", required = false) MyObject myObject,) { ... }

可能ですか? どうすればいいのでしょうか?

どのように解決するのですか?

を削除するだけで、絶対にできます。 @RequestParam アノテーションを使用すると、Spring はリクエストパラメータをクラスインスタンスにきれいにバインドします。

public @ResponseBody List<MyObject> myAction(
    @RequestParam(value = "page", required = false) int page,
    MyObject myObject)