Перейти к основному содержимому

Добавьте CSS и JS в Thymeleaf

· 4 мин. чтения

1. Введение

В этом кратком руководстве мы узнаем, как использовать CSS и JavaScript в наших шаблонах Thymeleaf .

Во-первых, мы рассмотрим ожидаемую структуру папок, чтобы знать, куда поместить наши файлы. После этого мы увидим, что нам нужно сделать, чтобы получить доступ к этим файлам из шаблона Thymeleaf.

Мы начнем с добавления стилей CSS на нашу страницу, а затем перейдем к добавлению некоторых функций JavaScript.

2. Настройка

Чтобы использовать Thymeleaf в нашем приложении, давайте добавим Spring Boot Starter для Thymeleaf в нашу конфигурацию Maven:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>

3. Основной пример

3.1. Структура каталогов

Напомним, Thymeleaf — это библиотека шаблонов, которую можно легко интегрировать с приложениями Spring Boot. По умолчанию Thymeleaf ожидает, что мы поместим эти шаблоны в папку src/main/resources/templates . Мы можем создавать подпапки, поэтому в этом примере мы будем использовать подпапку с именем cssandjs .

Для файлов CSS и JavaScript каталог по умолчанию — src/main/resources/static . Давайте создадим папки static/styles/cssandjs и static/js/cssandjs для наших файлов CSS и JS соответственно.

3.2. Добавление CSS

Давайте создадим простой файл CSS с именем main.css в нашей папке static/styles/cssandjs и определим базовые стили:

h2 {
font-family: sans-serif;
font-size: 1.5em;
text-transform: uppercase;
}

strong {
font-weight: 700;
background-color: yellow;
}

p {
font-family: sans-serif;
}

Затем давайте создадим шаблон Thymeleaf с именем styledPage.html в нашей папке templates/cssandjs , чтобы использовать эти стили:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Add CSS and JS to Thymeleaf</title>
<link th:href="@{/styles/cssandjs/main.css}" rel="stylesheet" />
</head>
<body>
<h2>Carefully Styled Heading</h2>
<p>
This is text on which we want to apply <strong>very special</strong> styling.
</p>
</body>
</html>

Мы загружаем таблицу стилей, используя тег ссылки со специальным атрибутом Thymeleaf th:href . Если мы использовали ожидаемую структуру каталогов, нам нужно только указать путь ниже src/main/resources/static . В данном случае это /styles/cssandjs/main.css . Синтаксис @{/styles/cssandjs/main.css} — это способ Thymeleaf связывания URL-адресов.

Если мы запустим наше приложение, мы увидим, что наши стили были применены:

./b55aa20a7ff1d91f836099b816adf597.jpg

3.3. Использование JavaScript

Далее мы узнаем, как добавить файл JavaScript на нашу страницу Thymeleaf.

Давайте начнем с добавления JavaScript в файл в src/main/resources/static/js/cssandjs/actions.js :

function showAlert() {
alert("The button was clicked!");
}

Затем мы возвращаемся к нашему шаблону Thymeleaf и добавляем тег <script> , который указывает на наш файл JavaScript:

<script type="text/javascript" th:src="@{/js/cssandjs/actions.js}"></script>

Теперь мы вызываем наш метод из нашего шаблона:

<button type="button" th:onclick="showAlert()">Show Alert</button>

Когда мы запустим наше приложение и нажмем кнопку « Показать предупреждение» , мы увидим окно предупреждения.

Прежде чем мы закончим, давайте немного поработаем над этим примером, изучив, как использовать данные из нашего контроллера Spring в нашем JavaScript.

Давайте начнем с изменения нашего контроллера, чтобы предоставить имя нашей странице:

@GetMapping("/styled-page")
public String getStyledPage(Model model) {
model.addAttribute("name", "ForEach Reader");
return "cssandjs/styledPage";
}

Далее давайте добавим в наш файл action.js функцию, которая будет использовать это имя в предупреждении:

function showName(name) {
alert("Here's the name: " + name);
}

Наконец, чтобы вызвать нашу функцию с данными из нашего контроллера, нам нужно использовать встраивание скрипта . Итак, давайте поместим значение имени в локальную переменную JavaScript:

<script th:inline="javascript">
var nameJs = /*[[${name}]]*/;
</script>

Сделав это, мы создали локальную переменную JavaScript, содержащую значение модели имени из нашего элемента управления, которое мы затем можем использовать в нашем JavaScript на остальной части страницы.

Теперь, когда мы это сделали, мы можем вызвать нашу функцию JavaScript, используя переменную nameJs :

<button type="button" th:onclick="showName(nameJs);">Show Name</button>

4. Вывод

В этом коротком руководстве мы узнали, как применять стили CSS и внешние функции JavaScript к нашим страницам Thymeleaf. Мы начали с рекомендуемой структуры каталогов и дошли до вызова JavaScript с данными, предоставленными в нашем классе контроллера Spring.

Как всегда, код доступен на GitHub .