Shi*_*jee 36 spring annotations spring-mvc
假设单击了一个超链接,并使用以下参数列表触发了一个url myparam=myValue1&myparam=myValue2&myparam=myValue3.现在我如何@RequestParam在spring mvc中捕获所有参数?
我的要求是我必须捕获所有参数并将它们放在地图中.
请帮忙!
Tou*_*one 41
@RequestMapping(value = "users/newuser", method = RequestMethod.POST)
public String saveUser(@RequestParam Map<String,String> requestParams) throws Exception{
String userName=requestParams.get("email");
String password=requestParams.get("password");
//perform DB operations
return "profile";
}
Run Code Online (Sandbox Code Playgroud)
您可以以上述方式使用RequestParam.
Vit*_*dny 24
看来你无法得到
Map<String,String>
Run Code Online (Sandbox Code Playgroud)
因为你所有的参数都有相同的名字"myparam"
试试这个:
public ModelAndView method(@RequestParam("myparam") List<String> params) { }
Run Code Online (Sandbox Code Playgroud)
Ral*_*lph 13
要立即获取所有参数,请尝试以下操作:
public ModelAndView postResultPage(@RequestParam MultiValueMap<String, String> params)
Run Code Online (Sandbox Code Playgroud)
@RequestParamjava doc(3.段落)中描述了此功能:
注释,指示应将方法参数绑定到Web请求参数.支持Servlet和Portlet环境中带注释的处理程序方法.
如果方法参数类型是Map并且指定了请求参数名称,则假定适当的转换策略可用,请求参数值将转换为Map.
如果方法参数为
Map<String, String>或MultiValueMap<String, String>且未指定参数名称,则使用所有请求参数名称和值填充map参数.
从Spring 3.0开始,您还可以使用MultiValueMap来实现此目的:
一个基本的例子是:
public String someMethod(@RequestParam MultiValueMap<String,String> params) {
final Iterator<Entry<String, List<String>>> it = params.entrySet().iterator();
while(it.hasNext()) {
final String k = it.next().getKey();
final List<String> values = it.next().getValue();
}
return "dummy_response";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77465 次 |
| 最近记录: |