将模板渲染成字符串?

Posted

技术标签:

【中文标题】将模板渲染成字符串?【英文标题】:Render a template into a string? 【发布时间】:2012-02-17 11:42:37 【问题描述】:

是否可以将模板“渲染”成字符串?我想使用一个模板并用一些值填充它,然后我必须将它们保存到本地磁盘。

render 方法总是将模板发送给客户端。我想要类似于运行模板但将模板的输出保存到可以存储在本地文件系统中的本地字符串变量。

【问题讨论】:

【参考方案1】:

比你想象的要简单:

def myTemplateString = g.render(template: "test", model: [foo: bar])

【讨论】:

这什么也没做,为什么它是公认的答案?什么是“g”变量? 也需要注入PageRenderer。 @Michael,这取决于你在哪里使用它。在服务中,您需要 groovyPageRenderer,但在控制器中,您可以使用 GSP 中也可用的渲染方法。所以<g:render template="something" 可以像g.render(template: 'something') 这样调用。【参考方案2】:

如果您使用的是 Grails 2.x,则可以使用 PageRenderer 类。试试这样的:

     grails.gsp.PageRenderer groovyPageRenderer

     void methodName()  
         def contents = groovyPageRenderer.render(template:"yourTemplate", model:yourModel)
         //you can use contents as a string now
     

这也将在 Web 请求的范围之外工作,例如在计划的作业或 Web 服务中。

【讨论】:

这在至少 Grails 2.1.1 及以下版本的 Tomcat 6 中不起作用。 @JohnGiotta 我相信您必须在支持 Servlet 3.0 的容器中运行才能使其正常工作。 我正在从服务运行它,但我在资源插件生成的链接和脚本标签的 url 中有一个额外的斜杠,如下所示:“//static/...” .任何想法为什么?

以上是关于将模板渲染成字符串?的主要内容,如果未能解决你的问题,请参考以下文章

vue如何渲染含变量的模板字符串

Vue模板渲染的原理是啥

Django 渲染模板路径配置变量使用。

django学习第三天

Python大神教你300行代码搞定HTML模板渲染「附源码」

Grails:将模板渲染为字符串