#java #html #spring-boot #checkbox #thymeleaf
#java #HTML #весенняя загрузка #флажок #thymeleaf
Вопрос:
Я пытаюсь отправить значения зацикленного контрольного поля для их печати в контроллере. Когда я нажимаю кнопку, я хочу, чтобы информация о выбранном чекбоксе отправлялась на контроллер и печаталась в консоли, но когда я нажимаю свою кнопку, чтобы отправить информацию в метод контроллера, он выдает мне исключение 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;
}
В этом я хочу получить названия городов с выбранным флажком, отправленные представлением, и распечатать их в консоли, но когда я пытаюсь, это выдает мне исключение NullPointerException. Какая правильная форма для отправки информации из флажка на контроллер?
Ответ №1:
Вы использовали форму, но отправляете информацию по ссылке, которая невозможна. Чтобы решить эту проблему: 1) Выполните действие для формы следующим образом: 2) И добавьте кнопку отправки внутри формы. здесь 3) Нажав на кнопку отправки, вы будете перенаправлены на URL действия.
Теперь вы получите информацию, заполненную внутри формы.