Поймать элементы из пути - PullRequest
0 голосов
/ 07 июня 2019

Здравствуйте, я работаю над перенаправлением значений на другую страницу. У меня есть метод сообщения с выбранными значениями в HashMap, а затем отправка их с помощью redirectAttributes.mergeAttributes.Это создать мне путь со значениями, но как перехватить эти значения, чтобы получить метод контроллера

 @GetMapping("/compare/{attrMap}")
    public String compareElements(@RequestParam String attrMap, Model model) {
        System.out.println(attrMap);

        //model.addAttribute("packets", packetService.getAllPackets());
        return "packet/compare";
}    


@PostMapping("/list")
public String postListElements(@ModelAttribute PacketWithChecksCollectionDto packetWithChecksCollectionDto, RedirectAttributes redirectAttributes) {
                List<PacketWithChecksDto> packetWithChecksDtos =
                        packetService
                                .getAllPackets()
                                .stream()
                                .map(p -> PacketWithChecksDto.builder().packetDto(p).build())
                                .collect(Collectors.toList());

                List<PacketWithChecksDto> packet = packetWithChecksCollectionDto.getPacketWithChecksDtos().stream().filter(x -> x.isChecked()).collect(Collectors.toList());
                Map<String, Object[]> attrmap = new HashMap<>();
                attrmap.put("true", packet.stream().map(x -> x.getPacketDto().getId()).toArray());
                attrmap.forEach((k, v) -> System.out.println(k + " " + Arrays.toString(v)));
                redirectAttributes.mergeAttributes(attrmap);
                return "redirect:/packet/compare/";
            }

1 Ответ

0 голосов
/ 07 июня 2019

Чтобы получить параметр запроса, вам нужно передать фактическое имя параметра в аннотации или в качестве имени переменной. Вам также необходимо удалить часть {attrMap} из вашего пути отображения, поскольку она используется для переменных пути (@PathVariable), а не для запроса параметров:

@GetMapping("/compare")
public String compareElements(@RequestParam("abc") String abc, Model model) {
    System.out.println(abc);
    return "packet/compare";
}

Если вы позвоните по номеру /compare?abc=xyz, вы получите результат xyz.

Если вы хотите, чтобы все параметры были Map, вы можете использовать @RequestParam Map<String, String> params.

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

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