«1. Обзор
В этом кратком руководстве мы увидим, как мы можем использовать массивы в Thymeleaf. Для простоты настройки мы собираемся использовать инициализатор spring-boot для начальной загрузки нашего приложения.
Основы Spring MVC и Thymeleaf можно найти здесь.
2. Зависимость Thymeleaf
В нашем файле pom.xml нам нужно добавить только зависимости SpringMVC и Thymeleaf:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3. Контроллер
Для простоты давайте воспользуемся контроллером с только один метод, который обрабатывает запросы GET.
Это отвечает передачей массива объекту модели, что делает его доступным для представления:
@Controller
public class ThymeleafArrayController {
@GetMapping("/arrays")
public String arrayController(Model model) {
String[] continents = {
"Africa", "Antarctica", "Asia", "Australia",
"Europe", "North America", "Sourth America"
};
model.addAttribute("continents", continents);
return "continents";
}
}
4. Представление
На странице представления мы собираемся получить доступ к массиву континентов, имя, которое мы передаем (континенты) от нашего контроллера выше.
4.1. Свойства и индексы
Одним из первых свойств, которые мы собираемся проверить, является длина массива. Вот как это можно проверить:
<p>...<span th:text="${continents.length}"></span>...</p>
Глядя на приведенный выше фрагмент кода со страницы просмотра, мы должны заметить использование ключевого слова th:text. Мы использовали его для вывода значения переменной внутри фигурных скобок, в данном случае длины массива.
Следовательно, мы получаем доступ к значению каждого элемента массива континентов по его индексу точно так же, как мы это делаем в нашем обычном Java-коде:
<ol>
<li th:text="${continents[2]}"></li>
<li th:text="${continents[0]}"></li>
<li th:text="${continents[4]}"></li>
<li th:text="${continents[5]}"></li>
<li th:text="${continents[6]}"></li>
<li th:text="${continents[3]}"></li>
<li th:text="${continents[1]}"></li>
</ol>
Как мы видели в приведенном выше фрагменте кода, каждый элемент доступен через его индекс. Мы можем перейти сюда, чтобы узнать больше о выражениях в Thymeleaf.
4.2. Итерация
Точно так же мы можем последовательно перебирать элементы массива.
В Thymeleaf вот как мы можем этого добиться:
<ul th:each="continet : ${continents}">
<li th:text="${continent}"></li>
</ul>
При использовании ключевого слова th:each для перебора элемента массива мы не ограничены использованием только тегов списка. Мы можем использовать любой тег HTML, способный отображать текст на странице. Например:
<h4 th:each="continent : ${continents}" th:text="${continent}"></h4>
В приведенном выше фрагменте кода каждый элемент будет отображаться в отдельном теге \u003ch4\u003e\u003c/h4\u003e.
4.3. Вспомогательные функции
Наконец, мы собираемся использовать функции вспомогательного класса для изучения некоторых других свойств массива.
Давайте посмотрим на это:
<p>The greatest <span th:text="${#arrays.length(continents)}"></span> continents.</p>
<p>Europe is a continent: <span th:text="${#arrays.contains(continents, 'Europe')}"></span>.</p>
<p>Array of continents is empty <span th:text="${#arrays.isEmpty(continents)}"></span>.</p>
Сначала мы запрашиваем длину массива, а затем проверяем, является ли Европа элементом массива континентов.
Наконец, мы проверяем, пуст ли массив континентов.
5. Заключение
В этой статье мы научились работать с массивом в Thymeleaf, проверяя его длину и обращаясь к его элементам с помощью индекса. Мы также научились перебирать его элементы в Thymeleaf.
Наконец, мы рассмотрели использование служебных функций для проверки других свойств массива.
И, как всегда, полный исходный код этой статьи можно найти на Github.