lib/my_test.ftl 模板內容以下:函數
<#macto copyright date> <p>Copyright (C)${date}Julia Smith.All rights reserved.</p> </#macro> <#assign mail = "jsmith@acme.com">
假設想在aWebPage.ftl 中使用這個模板.spa
若是使用code
<#include "/lib/my_test.ftl">
會在主命名空間中建立兩個變量. 若是再引入同名的變量時就會被後引入的或者新定義的覆蓋.這樣就不是很好,由於只想讓它們在"My Test Library"命名空間中.就須要用 import代替include了blog
<#import "lib/my_test.ftl" as my>
它會爲lib/my_test.ftl建立一個新的哈希表變量,就是空的命名空間my,若是在主命名空間有一個變量,名爲mail 或者 copyright,就不會引發混亂,由於兩個模板使用了不一樣的命名空間. 博客
若是 在lib/my_test.ftl 中修改 copyright 以下it
<#macro copyright date> <p>Copyright (C) ${date} Julia Smith. All rights reserved. <br>Email: ${mail}</p> </#macro>
而後修改aWebPage,ftl中的內容以下模板
<#import "/lib/my_test.ftl" as my> <#assign mail="fred@acme.com"> <@my.copyright date="1999-2002"/> ${my.mail} ${mail}
輸入爲class
<p>Copyright (C) 1999-2002 Julia Smith.All rights reserved. <br>Email :jsmith@acme.com </p> jsmith@acme.com fred@acme.com
以上說明可能不太好理解 在其餘博客上看到一看即懂得解析 摘錄再次 方便查看test
問題顯示:import
在inc1.ftl與inc2.ftl中的內容分別是:
<#assign username="劉德華">與<#assign username="張學友">
接着我在hello.ftl模版中用include將inc1.ftl包含進來
<#include "/inc/inc1.ftl">
${username}
此刻獲取的結果是:劉德華
接着咱們在hello.ftl用include將inc1.ftl與inc2.ftl同時進行包含進來
<#include "/inc/inc1.ftl">
<#include "/inc/inc2.ftl">
${username}
此刻獲取的值是:張學友
總結:出現這種狀況,在兩個模版中都分別存在變量名都相同的變量的時候,include包含進來,會進行覆蓋,include只時候將其公共的靜態文件進行包含,而裏面不涉及到內部函數以及變量聲明之類的,當涉及到這種問題,咱們就要用import進行導入