如何阅读模板以获取Freemarker模板中定义的一些属性

时间:2018-03-05 13:32:54

标签: spring-mvc freemarker

我正在使用Freemarker模板从网址中读取模板,然后在发送之前替换我的电子邮件中的某些部分。 有没有办法阅读模板并获得价值。例如,模板中的某个位置有一个属性列表,我需要在发送之前处理该电子邮件。此外,我将在处理模板后删除此部分。这部分我可以通过将showSection的datamodel值设置为false来解决。

<div class="prop">
    <#if showSection == true>
        <key> <value>
        <key> <value>
        <key> <value>
    </#if>
</div>

我查看了文档,但无法找到从模板中获取部分的方法。

1 个答案:

答案 0 :(得分:1)

没有切实可行的方法。通过&#34;没有实践&#34;我的意思是理论上你可以自己解析模板并提取这些信息,甚至可以利用FreeMarker的内部AST API(它仍然没有解析XML部分),但那将是丑陋和大量的工作。

此外,特别是当您在生成输出时从模板中删除该部分(并且模板的目的是生成输出)时,您是否只能将该信息存储在模板之外?

如果您必须将可提取的数据放入模板中,那么最接近的是<#ftl attributes={"myProps": { "a": 1, "b", 2 }} >,然后是template.getCustomAttribute("myProps")来获取Map