首页 > 解决方案 > th:replace 时添加了不必要的元素

问题描述

我正在th:replace像这样在 Thymeleaf 中包含模板

master.html

<div class="faq-wrapper">
    <div th:each="faq : ${faqs}" th:remove="tag">
        <div th:replace="content-faq-card"></div>
    </div>
</div>

内容-faq-card.html

<div class="faq-card">
    ...
</div>

我像这样初始化我的 templateRenderer:

ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();

templateResolver.setTemplateMode("LEGACYHTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setPrefix("/WEB-INF/");
templateResolver.setSuffix(".html");
templateResolver.setCacheable(false);

TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);

return templateEngine;

它工作正常,但如果我查看生成的 HTML,我会发现每次包含content-faq-card额外的

<HTML><head></head><BODY>
<div class="faq-card">
    ...
</div>
</BODY></HTML>

它正确呈现,但 HTML 无效。为什么会发生这种包装?有没有办法避免这种情况?

标签: javathymeleaf

解决方案


您需要定义您的<div class="faq-card">as<div th:fragment="faq-card">并将其引用为<div th:replace="content-faq-card :: faq-card"></div>.


推荐阅读