2017-08-30 140 views
1

我有三個非常簡單的文件:包括不解析模板文件

main.ftl

<#include "header.ftl"> 

<h1>Test</h1> 

<#include "footer.ftl"> 

header.ftl

<h1>Header</h1> 

footer.ftl

<h1>Footer</h1> 

技術上講,它應該輸出時有三個h1的但是我的實際輸出爲

  1. 我讀的是,根據配置FTL的支架可以從<>更改爲[],我試過改變,但仍然沒有。
  2. 我用*通配符來檢查父目錄和當前目錄,但仍然沒有運氣。
  3. 的Freemarker文檔指出默認include 指令解析內容爲.ftl文件,所以我應該沒有 問題:

解析:如果這是真的,那麼包含文件將被解析作爲FTL,否則整個文件將被視爲簡單文本(即,不會在其中搜索FreeMarker構造)。如果您省略此選項,則默認爲true。

那麼爲什麼我的模板不被解析?

回答

0

原來的Freemarker沒有處理.ftl文件作爲實際.ftl文件服務器已呈現內容爲.jsp文件,來解決我改變:

<view-map name="frs" page=""> 

到,

<view-map name="frs" type="screen" page="component://ecommerce/widget/CommonScreens.xml#your-identifier"/> 

其固定渲染。默認情況下,如果未定義type屬性,則會自動呈現一個JSP文件。

0

here

<#include "/common/copyright.ftl"> 

所以我認爲腳註和標題與主文件位於同一個文件夾中。所以,你將不得不做這樣的事情:

<#include "*/header.ftl"> 
<#include "*/footer.ftl"> 
+0

試過了,沒有工作。 – Script47

+0

你是否得到相同的錯誤? –

+0

是的,它不解析。 – Script47

1

對於未來的讀者着想...的#include指令從不輸出本身就像<#include ...>(所以你現在知道,這是main.ftl這不是傳遞給FreeMarker的)。它的parse參數適用於包括文件在內的所有文件。同樣,如果找不到模板,它將拋出異常,不會執行像打印<#include ...>這樣的任意內容。