Реализовать пользовательский Escaper во Freemarker - PullRequest
1 голос
/ 11 июля 2009

Freemarker может выполнять экранирование текста, используя что-то вроде этого:

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

xml, xhtml и html все встроены в escaper. Есть ли способ зарегистрировать пользовательский переводчик? Я хочу создать CSV, чтобы каждый отдельный элемент был экранирован, и это выглядит как хороший механизм.

Я пытаюсь сделать это в Struts 2, если это также имеет значение.

Ответы [ 2 ]

1 голос
/ 11 июля 2009

Вы, кажется, путаете два понятия здесь. ? xml,? xhtml и? html - это строки встроенные .
<#escape> OTOH - это синтаксический сахар, который избавляет вас от необходимости вводить одно и то же выражение снова и снова. Может использоваться с любым выражением, оно не ограничено встроенными модулями.

Тем не менее, к сожалению, нет встроенной функции для экранирования строки csv, и нет способа написать свой собственный, не изменяя исходный код FreeMarker (хотя, если вы действительно хотите пойти по этому пути, это довольно просто - взгляните на freemarker.core.BuiltIn) , Возможно, вы можете заменить на «regex» или просто написать / предоставить соответствующий метод и вызвать его в своем шаблоне.

0 голосов
/ 11 июля 2009

Javadoc для HtmlEscaper указывает, как создать / зарегистрировать это в коде (см. Заголовок), поэтому я подозреваю, что вы реализуете свой собственный TemplateTransformModel и регистрируете его в аналогичном мода то должна работать.

...