我试图将部分html注入GTPL文件,但似乎总是"逃脱"html内容.如何将HTML代码段发送到标记并直接呈现?
"hello.gtpl"的内容
yieldUnescaped '' html { yieldUnescaped text }
来自ratpack.groovy
get('helloplain') { //works .but clumsy String htmlPayLoad = "Hello Hello
" context.getResponse().contentType(HttpHeaderConstants.HTML_UTF_8).send(htmlPayLoad.getBytes()); } get('hellotemplate') { //ex: /users/ String text = "Hello Hello
" render groovyMarkupTemplate( "hello.gtpl" ,text: text ) }
localhost:5050/helloplain
提供适当的HTML,以 localhost:5050/hellotemplate
提供已转义所有HTML内容的文件.
<title> Hello </title><body> <h3> Hello </h3> </body>
我错过了什么?
您需要配置MarkupTemplateEngine
以禁用自动转义.这是一个使用最新稳定版Ratpack的工作示例.
ratpack.groovy
@Grab('io.ratpack:ratpack-groovy:1.1.1') import static ratpack.groovy.Groovy.ratpack import static ratpack.groovy.Groovy.groovyMarkupTemplate import ratpack.groovy.template.MarkupTemplateModule ratpack { bindings { module(MarkupTemplateModule) { config -> config.autoEscape = false } } handlers { get { String text = 'Hello Hello
' render groovyMarkupTemplate('hello.gtpl', text: text) } } }
模板/ hello.gtpl
yieldUnescaped '' html { yieldUnescaped text }
卷曲运行app的输出
$ curl localhost:5050Hello Hello
有关可用于配置的属性的列表,您可以查看GDK http://docs.groovy-lang.org/latest/html/gapi/groovy/text/markup/TemplateConfiguration.html