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

How to read a template to get some properties defined in Freemarker template

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

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

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

没有实用的方法可以做到这一点。 "no practical" 我的意思是理论上你可以自己解析模板并提取信息,甚至可以利用 FreeMarker 的内部 AST API(它仍然不解析 XML 部分) ,但这会很丑陋并且需要大量工作。

此外,尤其是当您在生成输出时从模板中删除该部分(模板的目的是生成输出)时,您不能只将该信息存储在模板之外吗?

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