Вывести заданные значения из таблицы Thymelife
Есть контроллер, замаппленный на /cars, я создал модель Car с тремя произвольными полями и создал список из 5 машин, затем создал сервис с методом, который будет возвращать указанное число машин из созданного списка. Также создал страницу cars.html. Задача : реализовать создание таблицы с машинами из сервиса с помощью thymeleaf и при запросе /cars выводить весь список.При запросе /cars?count=2 должен отобразиться список из 2 машин, при /cars?count=3 - из 3, и тд. При count ≥ 5 выводить весь список машин. Контроллер, сервис и настройку таймлиф я реализовал, но при запросе в браузере cars?count=3 список машин не выводится.
public class CarsController {
@GetMapping("/cars")
public String cars(@RequestParam(value = "count", defaultValue = "5") int allCars, Model model) {
List<Car> list = new ArrayList<>();
list.add(new Car("Ford", "RED", 1000));
list.add(new Car("Ferrari", "YELLOW", 700));
list.add(new Car("Aston Martin", "BLACK", 500));
list.add(new Car("FIAT", "GREEN", 180));
list.add(new Car("BMW", "BLUE", 100));
list = CarService.carsCount(list, allCars);
model.addAttribute("list", list);
return "car";
}
}
class CarService
public class CarService {
public static List<Car> carsCount(List<Car> list, int number) {
if (number == 0 || number > 5) return list;
return list.stream().limit(number).collect(Collectors.toList());
}
}
car.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Car</title>
<style>table th, table td {padding: 5px;}</style>
</head>
<body>
<h1>th:each</h1>
<table border="1">
<tr>
<th>brand</th>
<th>color</th>
<th>power/th>
</tr>
<tr th:each="lst : ${list}">
<td th:utext="${lst.brand}">brand</td>
<td th:utext="${lst.color}">color</td>
<td th:utext="${lst.power}">power</td>
</tr>
</table>
</body>
</html>
Ответы (1 шт):
Всем спасибо! Вопрос решен. Один из методов в файле конфигурации возвращал null.
public class AppInit extends AbstractAnnotationConfigDispatcherServletInitializer {
// Метод, указывающий на класс конфигурации
@Override
protected Class<?>[] getRootConfigClasses() {
//неправильно
return null
//правильно
return new Class<?>[]{WebConfig.class};
}
// Добавление конфигурации, в которой инициализируем ViewResolver, для корректного отображения jsp.
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{
WebConfig.class
};
}
/* Данный метод указывает url, на котором будет базироваться приложение */
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
