我在前端有一个表格,用户可以从月份列表中选择年份和一个或多个月份。这些参数将作为Get方法发送到Controller。 给定这样的URL:
..../{year}/{months}/excel/
其中月份是所选月份的可变列表,即[01,02,10
。
我如何在Controller中接收所有参数? 到目前为止,这是我的控制器:
@RequestMapping(value = "/{year}/{months}/excel/", method = RequestMethod.GET, produces = EXCEL_FORMAT_HEADER)
public @ResponseBody
ModelAndView getRankingByYearExcel(@PathVariable("year") Integer year,
@RequestParam Map<String, Object> months)
{...}
答案 0 :(得分:3)
我做到了这一点,并努力工作,将months
声明为字符串数组:
@RequestMapping(value = "/{year}/excel/", method = RequestMethod.GET, produces = EXCEL_FORMAT_HEADER)
public @ResponseBody
ModelAndView getRankingByYearExcel(@PathVariable("year") Integer year,
@RequestParam String[] months)
然后在URL中以字符串数组形式发送了变量月份:
../2016/excel/?months=1,3,12
感谢您指导我朝这个方向
答案 1 :(得分:2)
我将@RequestParam Map<String, Object> months
更改为@RequestParam String months
,然后可以根据逗号分割月份。
String[] monthsList = months.split(",");
monthsList
数组将具有所有用户选择的值。
答案 2 :(得分:2)
这是将所有URI模板变量绑定到Map并使用的方法。
首先,您需要将@RequesetParam
更改为@PathVariable
example1:
@RequestMapping("{id}/messages/{msgId}")
public String handleRequest4 (@PathVariable Map<String, String> varsMap, Model model) {
model.addAttribute("msg", varsMap.toString());
return "my-page";
}
example2:
@GetMapping("/request4/{name}/{age}/address/{city}/{country}")
@ResponseBody
public String handler(@PathVariable Map<String, String> params) {
StringBuilder builder = new StringBuilder();
builder.append("URL parameters - <br>");
for (Entry<String, String> entry : params.entrySet()) {
builder.append(entry.getKey() + " = " + entry.getValue() + "<br>");
}
return builder.toString();
}