2015-05-23 71 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=在这一点上创建一个新文件。

相关问题