Наконец разобрался с ответом:
autoEscape
не позволяет экранировать в шаблонах. Он позволяет только экранировать данные, переданные непосредственно в groovyMarkupTemplate
, например:
<code>groovyMarkupTemplate('template.gtpl', var: '<pre>Escaped
')
Решение
Чтобы включить экранирование во всех шаблонах по умолчанию, это необходимо создать подкласс BaseTemplate
следующим образом:
Примените наш собственный шаблонизатор в Ratpack. groovy
bindings {
module(MarkupTemplateModule) { TemplateConfiguration config ->
config.baseTemplateClass = MyMarkupTemplate
}
}
Подкласс BaseTemplate и метод переопределенияMissing ( ):
@InheritConstructors
abstract class MyMarkupTemplate extends BaseTemplate {
@Override
Object methodMissing(String tagName, Object args) {
if (args instanceof Object[]) {
Object[] argsArray = (Object[])args
// Traverse argsArray ans escape every instance of String
// with XmlUtil.escapeXml()
return super.methodMissing(tagName, argsArray)
}
super.methodMissing(tagName, args)
}
}