我現在對freemarker有點麻煩。我想在我的模板中基本做的事:遍歷元素列表併爲每個元素創建一個新文件。如何基於一個Freemarker模板創建多個文件
<#assign x=3>
<#list 1..x as i>
${i}
...create a new file with the output of this loop iteration...
</#list>
我在freemarker手冊或谷歌上沒有找到任何關於這方面的信息。有沒有辦法做到這一點?
我現在對freemarker有點麻煩。我想在我的模板中基本做的事:遍歷元素列表併爲每個元素創建一個新文件。如何基於一個Freemarker模板創建多個文件
<#assign x=3>
<#list 1..x as i>
${i}
...create a new file with the output of this loop iteration...
</#list>
我在freemarker手冊或谷歌上沒有找到任何關於這方面的信息。有沒有辦法做到這一點?
您可以使用自定義指令實現此功能。參見freemarker.template.TemplateDirectiveModel
,特別是TemplateDirectiveBody
。自定義指令可以指定在其嵌套內容中使用的Writer
。因此,您可以執行類似於<@output file="...">...</@output>
的操作,其中嵌套的內容將寫入您在TemplateDirectiveModel
實現中提供的Writer
,在這種情況下,應該寫入指定的文件。 (FMPP也這樣做:http://fmpp.sourceforge.net/qtour.html#sect4)
你不能只使用FreeMarker。它的想法是從你的模板中產生單一輸出流。它甚至不關心你是否將結果保存到文件,直接傳遞給TCP套接字,作爲字符串存儲在內存中還是做其他任何事情。
如果你真的想達到這個目的,你必須自己處理文件分離。例如,您可以將喜歡專線:
<#assign x=3>
<#list 1..x as i>
${i}
%%%%File=output${i}.html
...
</#list>
之後,你自己應該張貼處理FreeMarker的輸出尋找線開始%%%%File=
在這一點上創建一個新文件。