首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在@RequestParam中绑定列表

在@RequestParam中绑定列表
EN

Stack Overflow用户
提问于 2011-01-05 01:09:25
回答 5查看 254.8K关注 0票数 147

我以这种方式从表单中发送一些参数:

代码语言:javascript
复制
myparam[0]     : 'myValue1'
myparam[1]     : 'myValue2'
myparam[2]     : 'myValue3'
otherParam     : 'otherValue'
anotherParam   : 'anotherValue' 
...

我知道我可以通过添加像这样的参数来获得控制器方法中的所有参数

代码语言:javascript
复制
public String controllerMethod(@RequestParam Map<String, String> params){
    ....
}

我想将参数myParamnot the other ones绑定到一个列表或数组(任何保持索引顺序的东西),所以我尝试使用如下语法:

代码语言:javascript
复制
public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){
    ....
}

代码语言:javascript
复制
public String controllerMethod(@RequestParam(value="myParam") String[] myParams){
    ....
}

但它们都没有绑定myParams。即使我给map添加了一个值,它也不能绑定参数:

代码语言:javascript
复制
public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){
    ....
}

有没有什么语法可以将一些参数绑定到列表或数组,而不必创建一个带有列表属性的@ModelAttribute对象?

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-05 01:19:35

@RequestParam中的数组用于绑定多个同名的参数:

代码语言:javascript
复制
myparam=myValue1&myparam=myValue2&myparam=myValue3

如果你需要绑定@ModelAttribute-style索引参数,我想你还是需要@ModelAttribute

票数 91
EN

Stack Overflow用户

发布于 2011-04-11 23:54:39

或者你可以这样做:

代码语言:javascript
复制
public String controllerMethod(@RequestParam(value="myParam[]") String[] myParams){
    ....
}

例如,它适用于像这样的表单:

代码语言:javascript
复制
<input type="checkbox" name="myParam[]" value="myVal1" />
<input type="checkbox" name="myParam[]" value="myVal2" />

这是最简单的解决方案:)

票数 116
EN

Stack Overflow用户

发布于 2017-02-13 18:45:15

订阅basil在对问题本身的评论中所说的,如果method = RequestMethod.GET,你可以使用@RequestParam List<String> groupVal

然后,使用params列表调用服务就像这样简单:

代码语言:javascript
复制
API_URL?groupVal=kkk,ccc,mmm
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4596351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档