Ошибка разбора шаблона PDF Thymeleaf при использовании фрагмента - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь включить заголовок в мои шаблоны PDF следующим образом:

фрагментов / header.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Header</title>
</head>
<body>
<div id="header" class="clearfix" th:fragement="header(sender, name, address1, address2, today)">
    <div id="header-left">
        <img class="logo" src="app/src/main/resources/template/pdf/assets/logo.png"/>
        <div id="recipient">
            <p th:object="${sender}"><span th:text="*{name}"></span> - <span th:text="*{address1short}"></span> - <span th:text="*{address2}"></span></p>
            <p th:text="${name}"></p>
            <p>
                <span th:text="${address1}"></span><br/>
                <span th:text="${address2}"></span>
            </p>
        </div>
    </div>
    <div id="header-right" th:object="${sender}">
        <p><strong th:text="*{name}"></strong></p>
        <p>
            <span th:text="*{address1}"></span><br />
            <span th:text="*{address2}"></span><br />
            <span class="label" th:text="*{phoneLabel} + ':'"></span><span th:text="*{phone}"></span><br />
            <span class="label" th:text="*{faxLabel} + ':'"></span><span th:text="*{fax}"></span><br />
            <span class="label" th:text="*{emailLabel} + ':'"></span><span th:text="*{email}"></span><br />
            <strong><span th:text="*{internetLabel}"></span>: <span th:text="*{internet}"></span></strong>
        </p>
        <p>
            <span th:text="*{court}"></span><br />
            <span th:text="*{registryNr}"></span><br />
            <span th:text="*{directorLabel}"></span>: <span th:text="*{director}"></span><br />
            <span th:text="*{vatId}"></span><br />
        </p>
        <p><span th:text="*{todayPrefix}"></span> <span th:text="${today}"></span></p>
    </div>
</div>
</body>
</html>

template.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Template</title>
    <link rel="stylesheet" type="text/css" media="all" href="app/src/main/resources/template/pdf/assets/style.css"/>
</head>
<body>
<div th:replace="app/src/main/resources/template/pdf/fragments/header :: header(${sender}, ${name}, ${address1}, ${address2}, ${today})"></div>

<!-- omitted for brevity -->

</body>
</html>

Все работает нормально, когда я помещаю код заголовка в шаблон напрямую.Но когда я пытаюсь включить его как фрагмент, как описано выше, я получаю следующую ошибку:

org.thymeleaf.exceptions.TemplateInputException: ошибка произошла во время синтаксического анализа шаблона (template: "app / src/main/resources/template/pdf/fragments/header.html "- строка 9, столбец 6)

template.html находится в папке app / src / main / resources / template / pdf /,Мне пришлось включить файлы CSS и изображения с полным путем (из корня проекта), чтобы заставить их работать.Я попытался включить фрагмент с полным путем (как выше) и только fragements / header, но я получаю одну и ту же ошибку каждый раз.

Я использую

  • spring-boot-starter-thymeleaf 2.1.1
  • thymeleaf 3.0.11

Stacktrace: [удалено ограничение до н.э.]

UPDATE

Правильный путь для фрагмента (в моем случае) "template / pfd / фрагмент / заголовок" (так, полный путь из папки ресурсов).Кроме того, в th была опечатка: frag e ment = "header".

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Общее использование

<div th:replace="fragments/header :: header"><div>

Использование Thymeleaf

0 голосов
/ 12 декабря 2018

Ссылка на фрагмент должна быть не абсолютной для вашего проекта, а относительной к корневому шаблону вашего тимелического листа.Таким образом, вместо (при условии, что app/src/main/resources/template/, где расположены ваши шаблоны тимьяна)

th:replace="app/src/main/resources/template/pdf/fragments/header ..."

используйте

th:replace="pdf/fragments/header ..."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...