如何将页眉和页脚正确导入 FreeMarker 页面?

How can I correctly import an header and a footer page into a FreeMarker page?

我正在开发一个 Spring MVC 应用程序,它使用 FreeMarker 作为我的视图。

我完全是 FreeMarker 的新手,我遇到了以下问题:在我的项目中,我有 3 个文件必须组合成一个页面。

所以我有:

1) header.ftl 代表我所有页面的页眉,比如:

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js is-ie8"><![endif]-->
<!--[if gt IE 8]><!--><html class="no-js"><!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Registrazione -  MY WEBSITE</title>
        <meta name="robots" content="noindex,nofollow">

        <link rel="stylesheet" href="resources/css/webfont.css">
        <link rel="stylesheet" href="resources/bootstrap/css/bootstrap.min.css">
        <link rel="stylesheet" href="resources/bootstrap/css/bootstrap-theme.min.css">
        <link rel="stylesheet" href="resources/plugins/bs-select/bootstrap-select.min.css">
        <link rel="stylesheet" href="resources/plugins/bs-dialog/bootstrap-dialog.min.css">
        <link rel="stylesheet" href="resources/css/style.css" />

    </head>

    <body id="main">

        <!-- versione per popup. non prendere in considerazione -->
        <!--
        <div class="container page-header">
            <h1>MY WEBSITE</h1>
        </div>

2) footer.ftl代表我所有页面的页脚:

<script src="assets/bootstrap/js/bootstrap.min.js"></script>
<script src="assets/plugins/bs-select/bootstrap-select.min.js"></script>
    <script src="assets/plugins/bs-select/i18n/defaults-it_IT.min.js"></script>
    <script src="assets/plugins/bs-dialog/bootstrap-dialog.min.js"></script>
    <script src="assets/plugins/jq-form-validation/jquery.validation.js"></script>
    <script src="assets/js/functions.lib.js"></script>
    <script src="assets/js/form-validation.js"></script>

    </body>
</html>

3) 然后我有我的特定页面(名为 myPage.ftl,仅代表内容,如下所示:

<h1>This is the content</h1>
<p>Some inforamation</p>

header.ftlfooter.ftl都在这个目录下**\WEB-INF\freemarker\layout* * 我的项目。

所以我的问题是:如何在 myPage.ftl[=40= 的内容上方导入 header.ftl 的内容]和footer.ftl页面内容下的myPage.ftl?

我使用用户定义的页面布局宏来完成此操作,例如让我们称你的布局为 standardPage.ftl:

<#macro standardPage title="">
<!DOCTYPE html>
<html lang="en">
<head>
    <title>${title}</title>
</head>
<body>
    <#include "/include/header.ftl">    

    <#nested/>

    <#include "/include/footer.ftl">    
</body>
</html>
</#macro>

然后你可以在你的每个页面中调用这个宏,例如homePage.ftl:

<#include "/pages/standardPage.ftl" />

<@standardPage title="Home">
    <h1>Home Page</h1>
    <p>This bit replaces the nested tag in the layout</p>
</@standardPage>