Freemarker能够使用以下内容进行文本转义:
<#escape x as x?html>
Foo: ${someVal}
Bar: ${someOtherVal}
</#escape>
xml,xhtml和html都是在escapers中构建的。有没有办法注册自定义书面转义器?我想生成CSV并让每个元素都被转义,这似乎是一个很好的机制。
如果重要的话,我试图在Struts 2中这样做。
答案 0 :(得分:1)
你似乎在这里混淆了两个概念。 ?xml,?xhtml和?html是字符串内置插件
<#escape>
OTOH是一种语法糖,可以帮助您避免一遍又一遍地输入相同的表达式。它可以与任何表达式一起使用,它不仅限于内置函数。
也就是说,遗憾的是没有内置的csv字符串转义,没有修改FreeMarker源就无法编写自己的内容(不过如果你想这样做,那就非常简单了 - 看看{{1} })。也许您可以使用?替换使用正则表达式或只是编写/公开适当的方法并在模板中调用它。
答案 1 :(得分:0)
HtmlEscaper的Javadoc指示如何在代码中实例化/注册它(参见标题),所以我怀疑你是否实现了自己的TemplateTransformModel,并以类似的方式注册它工作