@RequestParam でリストをバインドする 質問する

@RequestParam でリストをバインドする 質問する

私は次のようにフォームからいくつかのパラメータを送信しています:

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" />

これは最も簡単な解決策です:)

おすすめ記事