有没有办法跳过解析整个应用程序的某些标签?例如。我的模板中有很多<pre>
个标签,我想跳过所有这些标签,而不会在每个地方插入<#noparse>
标签。
答案 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标签,但至少它清楚地表明这里发生了一些额外的事情)。