我是Thymeleaf模板引擎的新手,我正在使用Spring Boot和Spring MVC创建一个应用程序。我正在使用application.properties
进行配置。
我想知道如何只能编写 ONE 布局,但许多文件中的内容:例如content1.html
,content2.html
等,并使用已经布局的布局有页眉,页脚。
如果可能,我如何从控制器发送将在布局中替换的内容文件?
答案 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
参数。