2009-07-10 3 views
1

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

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

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

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

ответ

1

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

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

+0

Это отвечает на вопрос. Похоже, это больше проблем, чем того стоит. Я думаю, что я перейду по пути CSVWriter вместо шаблона. – geofflane

0

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

+0

Я думал, '' устарел? – ChssPly76

+0

Я не знаю, признаюсь. Конечно, классы, на которые ссылаются, не выглядят –

Смежные вопросы