#java #spring #spring-boot
#java #весна #spring-boot
Вопрос:
Итак, я пытаюсь создать веб-приложение Java с использованием Springboot и Thymeleaf. Всякий раз, когда я пытаюсь выполнить поиск, я перенаправляюсь на страницу ошибки, потому что я получаю 404 Not Found.
Форма, которую я использую:
<form method="get" th:action="@{/searchBusDP}">
<p class="mb-3">
<label for="departurePlace" class="col-form-label">Departure place</label>
<input type="text" id="departurePlace" name="departurePlace" placeholder="Departure place" class="form-control col-sm-5">
<!--<span th:if="${error ne null}" th:text="${error}" class="text-danger"></span>-->
</p>
<p>
<input type="submit" value="Search bus" class="btn btn-primary">
</p>
</form>`
Мой код контроллера:
@GetMapping("/searchBus")
public String searchBus() {
System.out.println("Ik ben in de search");
return "search-bus";
}
@GetMapping("/searchBusDP")
public String searchBusDP(@RequestParam(name = "departureName") String departurePlace, Model model) {
try {
System.out.println("I'm in search DP");
Iterable<Bus> busses = busService.findAllBussesByDeparturePlace(departurePlace);
model.addAttribute("busses", busses);
} catch (IllegalArgumentException exc){
model.addAttribute("error", exc.getMessage());
}
return "search-bus";
}
Сообщение об ошибке, которое я получаю в IntelliJ:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'departureName' is not present]
Комментарии:
1. когда вы выполняете вызов get, как вы передаете
departureName
параметр? В вашей форме thymeleaf вы не задаете этот параметр
Ответ №1:
Имя параметра RequestParam в методе searchBusDP написано неправильно, оно должно быть departurePlace, но это departureName .
Это должно это исправить:
@RequestParam(name = "departurePlace") String departurePlace
Ответ №2:
На странице html ваш тип ввода называется departurePlace, а в контроллере, который вы вызываете, другим именем try
@GetMapping("/searchBusDP")
public String searchBusDP(@RequestParam(name = "departurePlace ") String departurePlace , Model model) {
try {
System.out.println("I'm in search DP");
Iterable<Bus> busses = busService.findAllBussesByDeparturePlace(departurePlace);
model.addAttribute("busses", busses);
} catch (IllegalArgumentException exc){
model.addAttribute("error", exc.getMessage());
}
return "search-bus";
}