Как отправить информацию о флажке из представления в контроллер в Thymeleaf? - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь отправить значения зацикленного checbox для печати их в контроллере.Когда я нажимаю кнопку, я хочу, чтобы информация о выбранном чекбоксе была отправлена ​​на контроллер и распечатана в консоли, но когда я нажимаю кнопку, чтобы отправить информацию в метод контроллера, она выдает мне исключение NullPointerException.Мой HTML выглядит так:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Select Cities</title>
    <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <div class="row align-items-center">
        <div class="col-4 mt-3">
            <form action="">
                <div class="form-check"  th:each="names : ${namesOfCities}">
                    <label for="" class="form-check-label">
                        <input type="checkbox" name="lista" th:value="${names}" th:text="${names}">
                    </label>
                </div>
                <a href="#"th:href="@{/starbucks/showSelectedCities}" class="btn btn-primary">Aceptar</a>
            </form>
        </div>
        <div class="col-8">
            <div id="chart" style="height: 400px"></div>
        </div>
    </div>
</div>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-3d.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="../js/jquery-3.3.1.min.js"></script>
<script src="../js/popper.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</body>
</html>

Здесь, в HTML, я создаю флажок для каждого элемента в списке, отправляемом контроллером.

У меня есть два метода в контроллере, первый:

   @GetMapping("/selectCities")
    public ModelAndView selectCities(Model model){
        ModelAndView mav = new ModelAndView(ViewConstant.SELECT_CITIES);
        //List<String> citiesNames = namesOfCities();
        List<String> citiesNames = recortarList();
        model.addAttribute("namesOfCities", citiesNames);
        return mav;
    }

Этот метод показывает представление HTML и отправляет список строк, содержащий названия городов.

Второй метод выглядит следующим образом:

@GetMapping("/showSelectedCities")
    public ModelAndView showSelectedCities(@RequestParam(name = "lista", required = false)List<String> id){
        ModelAndView mav = new ModelAndView(ViewConstant.SELECT_CITIES);
        for(int x=0;x<id.size();x++){
            System.out.println(id.get(x));
        }
        return mav;
    }

В этом я хочу получить названия городов выбранного флажка, отправленного представлением, и распечатать их в консоли, но при попытке это выдаетИсключение нулевого указателя.Как правильно отправить информацию из флажка на контроллер?

1 Ответ

0 голосов
/ 08 марта 2019

Вы использовали форму, но отправляете информацию по ссылке, что невозможно. Чтобы решить эту проблему: 1) Дайте действие к форме как: 2) И добавьте кнопку отправки внутри формы. Вот 3) Нажав на кнопку отправки, вы будете перенаправлены на URL-адрес действия.

Теперь вы получите информацию, заполненную внутри формы.

...