跳过解析某些标签

时间:2017-11-27 13:15:02

标签: parsing templates freemarker

有没有办法跳过解析整个应用程序的某些标签?例如。我的模板中有很多<pre>个标签,我想跳过所有这些标签,而不会在每个地方插入<#noparse>标签。

1 个答案:

答案 0 :(得分:2)

如果您的模板中有很多${} - s,那么运气不好,那些不是FreeMarker插值。 (这最终将由FreeMarker以语法选项解决。)为了逃避单个${exp} - s,有一些短于<#noparse>${exp}</#noparse>的黑客攻击:

<#macro $>${'$'}{<#nested>}</#macro>

然后

<@$>exp</@>

${'$'}{exp}

如果你提供自己的TemplateLoader实现(参见Configuration.setTemplateLoader),它也可以动态地后处理模板(即,当它们被加载时)真实TemplateLoader并过滤其创建的Reader。因为在那个级别你正在使用普通的Reader - s,解析取决于你,但这并不是那么简单。有了它,甚至可以用<pre>...</pre>替换<#noparse><pre>...</pre></#noparse>,尽管我认为这样的魔术会让其他开发者感到困惑。因此,如果你沿着后处理路径前进,我会建议使用像<#pre>...</#pre>这样的东西(一个假的FTL标签,但至少它清楚地表明这里发生了一些额外的事情)。