【问题标题】:Implement a Custom Escaper in Freemarker在 Freemarker 中实现自定义 Escaper
【发布时间】:2010-11-09 20:21:59
【问题描述】:

Freemarker 可以使用以下方式进行文本转义:

<#escape x as x?html>
Foo: ${someVal}
Bar: ${someOtherVal}
</#escape>

xml、xhtml 和 html 都内置在转义符中。有没有办法注册一个自定义的书面转义符?我想生成 CSV 并转义每个单独的元素,这似乎是一个很好的机制。

如果这也很重要,我正在尝试在 Struts 2 中执行此操作。

【问题讨论】:

    标签: java struts2 freemarker


    【解决方案1】:

    HtmlEscaper 的 Javadoc 指示如何在代码中实例化/注册它(请参阅标题),所以我怀疑如果您实现自己的 TemplateTransformModel,并以类似的方式注册它,那应该可以工作。

    【讨论】:

    • 我认为&lt;transform&gt; 已被弃用?
    • 我不知道,我承认。当然引用的类似乎不是
    【解决方案2】:

    您似乎在这里混淆了两个概念。 ?xml、?xhtml 和 ?html 是字符串内置
    &lt;#escape&gt; OTOH 是语法糖,可让您免于一遍又一遍地输入相同的表达式。它可以与 any 表达式一起使用,它不限于内置。

    也就是说,不幸的是,没有内置的 csv 字符串转义,并且如果不修改 FreeMarker 源代码就无法编写自己的代码(尽管如果你确实想这样做,它非常简单 - 看看 freemarker.core.BuiltIn) .也许您可以使用 ?replace 使用正则表达式,或者只是编写/公开一个适当的方法并在您的模板中调用它。

    【讨论】:

    • 这回答了这个问题。它看起来比它的价值更麻烦。我想我会选择 CSVWriter 路线而不是模板。
    猜你喜欢
    • 2016-10-10
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多