1. ホーム
  2. java

[解決済み] RequestParamでリストをバインドする

2022-04-29 10:50:03

質問

このような方法で、フォームからいくつかのパラメータを送信しています。

myparam[0]     : 'myValue1'
myparam[1]     : 'myValue2'
myparam[2]     : 'myValue3'
otherParam     : 'otherValue'
anotherParam   : 'anotherValue' 
...

のようなパラメータを追加すれば、コントローラメソッドですべてのパラメータを取得できることは知っています。

public String controllerMethod(@RequestParam Map<String, String> params){
    ....
}

パラメータmyParam[](他のパラメータは除く)をリストや配列(インデックス順を保てるもの)に束ねたいので、以下のような構文で試してみました。

public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){
    ....
}

そして

public String controllerMethod(@RequestParam(value="myParam") String[] myParams){
    ....
}

が、どれもmyParamsをバインドしていない。mapに値を追加しても、paramsをバインドすることはできません。

public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){
    ....
}

リスト属性を持つ @ModelAttribute としてオブジェクトを作成することなく、いくつかのパラメータをリストまたは配列にバインドする構文はありますか?

ありがとうございます。

解決方法は?

の配列は @RequestParam は、同じ名前の複数のパラメータを束ねるために使用されます。

myparam=myValue1&myparam=myValue2&myparam=myValue3

をバインドする必要がある場合 @ModelAttribute -スタイルのインデックス付きパラメータが必要なのでしょう。 @ModelAttribute のように、とにかく