我正试图在我的PDF模板中包括一个信头,如下所示:
fragments / 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:模板解析期间发生错误(模板:“ app / src / main / resources / template / pdf / fragments / header.html”-第9行,第6列)
template.html位于app / src / main / resources / template / pdf /文件夹中。为了使它们正常工作,我必须在CSS和图像文件中包含完整路径(从项目的根目录开始)。我尝试将完整路径(如上所述)的片段包括在内,并且仅包含片段/标题,但每次都会遇到相同的错误。
我正在使用
Stacktrace: [已删除字符限制的密件抄送]
更新
该片段的正确路径是(以我为例)“ template / pfd / fragment / header”(因此,来自资源文件夹的完整路径)。另外,th:frag e ment =“ header”中有一个错字。
答案 0 :(得分:1)
片段引用对您的项目而言不是绝对的,而应相对于您的百里香模板根目录而言。因此,而不是(假设您的百里香模板位于app/src/main/resources/template/
那里)
th:replace="app/src/main/resources/template/pdf/fragments/header ..."
使用
th:replace="pdf/fragments/header ..."
答案 1 :(得分:1)