Spring Получить все параметры из URL в контроллере - PullRequest
0 голосов
/ 27 июня 2018

У меня есть передний край формы, где пользователь выбирает год и один или несколько месяцев из списка месяцев. Эти параметры будут отправлены в контроллер как метод Get. Учитывая URL-адрес, как это:

..../{year}/{months}/excel/

Где месяцы будут переменным списком выбранных месяцев, т.е. [01,02,10].

Как мне получить все параметры в контроллере? Вот мой контроллер до сих пор:

    @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)
 {...}

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Вот как вы привязываете все переменные шаблона 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();
}

Для получения дополнительной информации см. doc1 или см. doc2

.
0 голосов
/ 28 июня 2018

Я сделал это так и сработал, объявив 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

Спасибо за руководство в этом направлении

0 голосов
/ 27 июня 2018

Я бы изменил @RequestParam Map<String, Object> months на @RequestParam String months Затем вы можете разделить месяцы на запятую.

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

В массиве monthsList будут все выбранные пользователем значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...