如何创建一个通用页面,我可以使用Thymleaf和Spring启动在应用程序内的每个位置使用?

时间:2017-10-25 15:05:49

标签: spring spring-boot thymeleaf

我试图了解如何使用Thymeleaf,我有这样的结构:

我有一个PROC SQL; CREATE TABLE WORK.MALE_POP_SQL00 AS SELECT countyname AS CountyName, age_grp AS AgeGroup, SUM(pop00) AS Pop_00 FROM WORK.INTERCENSAL_M GROUP BY countyname, age_grp ORDER BY countyname, age_grp; QUIT; 就像最常见的网页一样,我把它包含在一般default.htmlcss等等。我用{{1}代替页脚和导航栏。我使用此页面作为所有其他页面的基线。

我的问题是:如何将此页面用于所有其他页面?

例如,如果我有2个页面,页面 A B ,并且它们都需要引导程序,应用程序的CSS等等,我不会# 39;要写代码以包含它们两次,但只需要一次。所以要做到这一点,我想如果我想在另一种情况下显示 A B ,我必须将页面 A 放在default.html中。 / p>

至少,我是这样使用JSP完成的。

我该怎么办?是否有可能使用Thymeleaf?

我试图像这样做,但是id不起作用

default.html中

bootstrap

1 个答案:

答案 0 :(得分:1)

完全有可能!

我们有一些步骤与Thymeleaf一起做:

<强>配置:

1 - 将百万美元布局方言纳入您的项目:

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
    <version>2.1.2</version>
</dependency>

2 - 我不知道你的webConfig是怎么回事,但是对于Spring,我们必须将这个配置添加到模板引擎:

@Bean
    public TemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setEnableSpringELCompiler(true);

        //your templateResolver
        engine.setTemplateResolver(templateResolver());

        //here it is!
        engine.addDialect(new LayoutDialect());

        return engine;
    }

默认html:

<!DOCTYPE html>

<html lang="pt-BR"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:th="http://www.thymeleaf.org"

    <!-- Necessary to thymeleaf layout dialect-->
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">

<head>
    <link rel="stylesheet" type="text/css" th:href="@{/layout/stylesheets/vendors/bootstrap.css}" />
</head>

<body>
    <header>your Heder here</header>

    <!--Here what you want, it gonna find the other html that contains "maincode"-->
    <section layout:fragment="maincode"></section>

    <footer>yourFooter</footer> 

    <script th:src="@{/javascript/vendors/jquery-2.2.4.min.js}"></script>
    <script th:src="@{/layout/javascripts/bootstrap.min.js}"></script>

    <th:block layout:fragment="javascript-extra"></th:block>
</body>

</html>

其他html:

<!DOCTYPE html>

<html lang="pt" xmlns="http://w3.org/1999/xhtml"
    xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"

    <!--Tell who is the default html-->
    layout:decorate="layout/defaultHtml">

<body>

    <section layout:fragment="maincode">
        bla bla bla
    </section>

</body>

</html>

有问题,请问!