私は次のようにフォームからいくつかのパラメータを送信しています:
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 をバインドしていません。マップに値を追加しても、パラメータをバインドできません。
public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){
....
}
リスト属性を含む @ModelAttribute としてオブジェクトを作成せずに、いくつかのパラメータをリストまたは配列にバインドする構文はありますか?
ありがとう
ベストアンサー1
または、次のようにすることもできます:
public String controllerMethod(@RequestParam(value="myParam[]") String[] myParams){
....
}
これは、たとえば次のようなフォームで機能します。
<input type="checkbox" name="myParam[]" value="myVal1" />
<input type="checkbox" name="myParam[]" value="myVal2" />
これは最も簡単な解決策です:)