如何读取模板以获取 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
。
我正在使用 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
。