Thymeleaf не может показать элемент на странице с декоратором - PullRequest
0 голосов
/ 04 июля 2019

Это dashboard.html:

<!DOCTYPE html>

<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorator="layout/layout">
</head>
<body>

<h2>
    qssq
</h2>

<th:block layout:fragment="content"
          th:include="layout/dashboard-content">

</th:block>

<h2>
    <label th:text="${messages}" class="error"></label>
</h2>
<tr th:each="message : ${messages}">
    <td th:text="${message}">Text ...</td>
</tr>
<h2>
    ssq
</h2>
</body>
</html>

Я хочу увидеть qssq или ssq или, может быть, messages, но я не вижу ни одного из них.

Вместо этогоЯ вижу элементы из "layout/dashboard-content"

Это layout/dashboard-content.html:

    <!DOCTYPE html>
<html lang="en">

<!-- Main content -->
<div class="main-content">
    <h1 class="page-title">Page Title</h1>
    <!-- Breadcrumb -->
    <ol class="breadcrumb breadcrumb-2">
        <li><a href="#"><i class="fa fa-home"></i>Home</a></li>
        <li><a href="#">Various Screens</a></li>
        <li class="active"><strong>Blank Page</strong></li>
    </ol>
    <div class="row">
        <div class="col-lg-12">
            <p>Page content goes here.</p>
        </div>
    </div>
    <br><br><br><br><br>

</div>



</html>

Это layout.html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head
        th:include="fragments/header :: head">
</head>

<body>


<div class="page-container">

    <th:block th:include="layout/left-nav"></th:block>


    <div class="main-container">

        <th:block th:include="layout/main-header"></th:block>


        <th:block layout:fragment="content"/>

    </div>


</div>


<th:block th:include="fragments/footer" :: foot></th:block>

</body>
</html>

Это исходит от spring:

 @GetMapping(value={"", "/", "/dashboard"})
    public ModelAndView root() {

        List<String> stringList = new ArrayList<>();
        stringList.add("xx");
        stringList.add("yy");

        ModelAndView modelAndView = new ModelAndView("dashboard");
        modelAndView.addObject("messages", stringList);
        return modelAndView;
    }

Я хочу упомянуть о страницах:

dashboard.html - главная домашняя страница.Он будет иметь динамический контент, который будет получен из dashboard-content.html

и layout.html является основным декоратором.Он имеет нижний колонтитул заголовок (для библиотек), а также основной заголовок (для верхней панели навигации) и фрагмент = содержимое для динамического содержимого(для панель инструментов , например, содержимое панели ).Таким образом, любой HTML-код может использовать эту компоновку, не только панель инструментов .

Но для панель инструментов мне нужно отправить параметры в dashboard-content ,ТАК, от контроллера, это идет к приборной панели .Затем он должен перейти к dashboard-content , но я даже не могу показать его в dashboard .Я даже не могу показать string в dashboard.html.Как:

    <h2>
    ssq
</h2>

В чем проблема?

Если я добавлю это

<th:block layout:fragment="content"
      th:include="layout/dashboard-content"
      th:with="messages=${messages}">

к dashboard.html

и это к

           <tr th:each="message : ${messages}">
            <td th:text="${message}">Text ...</td>
        </tr>

до dashboard-content.html

Я вижу значения, отправленные с controller.

Но почему я не вижу на dashboard.html, даже h2 текст?

И я хочу, чтобы значения были left-nav.html.

Итак, сначала он подходит к dashboard, но dashboard получает left-nav из макета.Итак, как мне это сделать?Преобразование этого

  <th:block th:include="layout/left-nav"></th:block>

в layout.html

в

  <th:block layout:fragment="left-nav"/>

, но оно уже имеет структуру.Мне нужно сохранить это.

...