搜尋

首頁  >  問答  >  主體

java - freemarker如何實現這種賊簡單的效果

模板

<!DOCTYPE html>
<html>
<head>
<#include "baseHeader.html" />
<#macro head ><#nested></#macro>
<#macro style ><#nested></#macro>
</head>

<body>
<#macro content >
    <#nested>
</#macro>
</body>

<#macro script >
    <#nested>
</#macro>
</html>

頁面呼叫

<#include "/layout/master.ftl" />
<@script>var a=1;</@script>

結果產生的頁面,這句var a=1;跑到了</html>後面,也就是模板的最後面,並沒有出現在模板對應的位置。

本人搞了幾年.net,感覺這種模板要出我的效果應該是理所當然的。
但是在java上,似乎要實現我預料中的效果,不容易?

我想大声告诉你我想大声告诉你2808 天前673

全部回覆(2)我來回復

  • 阿神

    阿神2017-05-27 17:43:00

    freemarker不是基於layout的,它只是做表達式求值和文字替換,是不能滿足你的要求的。

    據我所知:

    1. Struts配合Tiles外掛可以達到你要的layout效果。

    2. Thymeleaf配合thymeleaf-layout-dialect也可以達到你要的效果。

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-27 17:43:00

    宏的用法不對,可以參考下面

    <!-- 定义宏用 <#macro macroName parameterList> -->
    <#macro list title items>
        <p>${title?cap_first}:
        <ul>
            <#list items as item>
            <li>${item}
            </#list>
        </ul>
    </#macro>
    <!-- 调用宏用 <@macroName arguments> -->
    <@list items=animals title="animals"/>

    回覆
    0
  • 取消回覆