2015-05-23 94 views
1

我現在對freemarker有點麻煩。我想在我的模板中基本做的事:遍歷元素列表併爲每個元素創建一個新文件。如何基於一個Freemarker模板創建多個文件

<#assign x=3> 
<#list 1..x as i> 
    ${i} 
...create a new file with the output of this loop iteration... 
</#list> 

我在freemarker手冊或谷歌上沒有找到任何關於這方面的信息。有沒有辦法做到這一點?

回答

1

您可以使用自定義指令實現此功能。參見freemarker.template.TemplateDirectiveModel,特別是TemplateDirectiveBody。自定義指令可以指定在其嵌套內容中使用的Writer。因此,您可以執行類似於<@output file="...">...</@output>的操作,其中嵌套的內容將寫入您在TemplateDirectiveModel實現中提供的Writer,在這種情況下,應該寫入指定的文件。 (FMPP也這樣做:http://fmpp.sourceforge.net/qtour.html#sect4

0

你不能只使用FreeMarker。它的想法是從你的模板中產生單一輸出流。它甚至不關心你是否將結果保存到文件,直接傳遞給TCP套接字,作爲字符串存儲在內存中還是做其他任何事情。

如果你真的想達到這個目的,你必須自己處理文件分離。例如,您可以將喜歡專線:

<#assign x=3> 
<#list 1..x as i> 
    ${i} 
%%%%File=output${i}.html 
... 
</#list> 

之後,你自己應該張貼處理FreeMarker的輸出尋找線開始%%%%File=在這一點上創建一個新文件。

相關問題