Thymeleaf th: replace / insert / include работают в шаблоне, если используется макет - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в Thymeleaf. Я пытаюсь использовать th: replace / include / insert, чтобы использовать мой индивидуальный javascript для отдельных шаблонов. Я создал один макет для всех своих шаблонов - templates / layout / layout. html

Макет. html содержит:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<div th:replace="fragments/css :: css"></div>
<div th:replace="fragments/nav :: nav"></div>
</head>

<body>
<div class="container mt-2">

    <section layout:fragment="content"></section>

</div>
</body>
<div th:replace="fragments/scripts :: scripts"></div>
<div th:replace="fragments/script1 :: includeScript1"></div>
<div th:replace="fragments/footer :: footer"></div>
</html>

В макете выше я поставил <div th:replace="fragments/script1 :: includeScript1"></div>, который является одним из моих сценариев JavaScript. До сих пор все работает нормально.

Теперь я НЕ хочу использовать (включать) все мои скрипты в один макет и ХОЧУ использовать отдельные javascripts в отдельных шаблонах, чтобы избежать любых конфликтов, которые могут возникнуть.

Итак, для этого я удалил вышеупомянутый javascript из макета и поместил его в свой шаблон, как показано ниже:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
    layout:decorate="~{layouts/layout}">
<head>
<title>Springboot Rocks</title>
</head>
<body>
    <div layout:fragment="content">
        <div class="d-flex align-items-center justify-content-center">
            <select id="statusSelection"
                class="col-sm-2 form-control form-control-sm">
                <option>All</option>
                <option>Inactive</option>
                <option>Active</option>
            </select>
        </div>
        <br />
        <div th:replace="tables/usertable :: resultsList"></div>

        <div th:replace="fragments/script1 :: includeScript1"></div>
<!--        <div th:replace="fragments/test :: test"></div> -->
    </div>
</body>
</html>

И это не работает.

Вопрос 1: Почему это так, что th: replace работает в макете, но не работает внутри шаблона?

Вопрос 2: Это потому, что я использую макет? Если это так, не следует ли мне использовать макеты?

Мы будем очень признательны за любые указатели, пример кода или URL-адрес справки в этом отношении. Здесь - весь проект, если кому-то нужны подробности. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...