具有多个内容的Thymeleaf布局

时间:2016-10-27 16:22:13

标签: layout spring-boot thymeleaf

我是Thymeleaf模板引擎的新手,我正在使用Spring Boot和Spring MVC创建一个应用程序。我正在使用application.properties进行配置。

我想知道如何只能编写 ONE 布局,但许多文件中的内容:例如content1.htmlcontent2.html等,并使用已经布局的布局有页眉,页脚。

如果可能,我如何从控制器发送将在布局中替换的内容文件?

1 个答案:

答案 0 :(得分:5)

你可以这样做。我们假设您创建了一个页面,其中嵌入了所有其他内容 - didReceiveRemoteNotification:userinfo。它看起来像这样:

didReceiveRemoteNotification:userinfo

然后您想要创建一些将嵌入main.html页面的页面 - <!doctype html> <html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3" xmlns="http://www.w3.org/1999/xhtml"> <div th:fragment="mainPage(page, fragment)"> <h4>Some header</h4> <div th:include="${page} :: ${fragment}"></div> <h4>Some footer</h4> </div> </html>

main.html

目标是使用some-page.html中的内容替换<!doctype html> <html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3" xmlns="http://www.w3.org/1999/xhtml"> <div th:fragment="somePage"> <h1>${title}</h1> </div> </html> 中的<div th:include="${page} :: ${fragment}"></div>。在控制器中,它将如下所示:

main.html

你去吧!每次要在some-page.html中交换内容时,只需更改控制器中字符串中的@Controller public class DemoController { @RequestMapping public String somePage(Model model) { // Note that you can easy pass parameters to your "somePage" fragment model.addAttribute("title", "Woa this works!"); return "main :: mainPage(page='some-page', fragment='somePage')"; } } main.html参数。