簡體   English   中英

Spring從Controller中的URL獲取所有參數

[英]Spring Get all params from URL in Controller

我在前端有一個表單,用戶從月份列表中選擇年份和一個或多個月份。 這些參數將作為Get Method發送給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)
 {...}

我這樣做了並且工作了,聲明months的字符串:

@RequestMapping(value = "/{year}/excel/", method = RequestMethod.GET, produces = EXCEL_FORMAT_HEADER)
public @ResponseBody
ModelAndView getRankingByYearExcel(@PathVariable("year") Integer year,
                                   @RequestParam String[] months)

並在URL中發送變量month作為字符串數組:

../2016/excel/?months=1,3,12

謝謝你指導我這個方向

我會將@RequestParam Map<String, Object> months更改為@RequestParam String months您可以根據逗號分割月份。

String[] monthsList = months.split(",");

monthsList數組將包含所有用戶選擇的值。

以下是將所有URI模板變量綁定到Map並使用的方法。

首先,您需要將@RequesetParam更改為@PathVariable

例1:

@RequestMapping("{id}/messages/{msgId}")
public String handleRequest4 (@PathVariable Map<String, String> varsMap, Model model) {
    model.addAttribute("msg", varsMap.toString());
    return "my-page";
}

例2:

@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();
}

有關更多信息,請參閱doc1或參見doc2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM