在Freemarker中实现自定义Escaper

时间:2009-07-10 20:07:34

标签: java struts2 freemarker

Freemarker能够使用以下内容进行文本转义:

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

xml,xhtml和html都是在escapers中构建的。有没有办法注册自定义书面转义器?我想生成CSV并让每个元素都被转义,这似乎是一个很好的机制。

如果重要的话,我试图在Struts 2中这样做。

2 个答案:

答案 0 :(得分:1)

你似乎在这里混淆了两个概念。 ?xml,?xhtml和?html是字符串内置插件 <#escape> OTOH是一种语法糖,可以帮助您避免一遍又一遍地输入相同的表达式。它可以与任何表达式一起使用,它不仅限于内置函数。

也就是说,遗憾的是没有内置的csv字符串转义,没有修改FreeMarker源就无法编写自己的内容(不过如果你想这样做,那就非常简单了 - 看看{{1} })。也许您可以使用?替换使用正则表达式或只是编写/公开适当的方法并在模板中调用它。

答案 1 :(得分:0)

HtmlEscaper的Javadoc指示如何在代码中实例化/注册它(参见标题),所以我怀疑你是否实现了自己的TemplateTransformModel,并以类似的方式注册它工作