假设我的数据库中存储了gsp代码片段。如何以编程方式将其与数据模型合并以生成字符串。以编程方式进行GSP渲染
4
A
回答
4
任何的Grails应用的ApplicationContext中包含一个名为
groovyPagesTemplateEngine
默认情况下,这是一个GroovyPagesTemplateEngine实例豆。所以,你可能在你的控制器或服务中使用这样的代码:
class MyService/MyController {
def groovyPagesTemplateEngine
String renderGSPToString(String uri, Map model) {
groovyPagesTemplateEngine.createTemplate(uri).make(model).toString()
}
}
注:此代码段是不是真的从运行代码服用,它应该只是厘清思路。
0
我发现一个DIRTY(但工作)的方式使用groovyPageRenderer替代脚本源渲染复杂的gsps离线。在这种情况下,你可以访问所有GSP语法包括g:if
等。
首先定义两个虚拟类:
class StringPageLocator extends GrailsConventionGroovyPageLocator {
GroovyPageScriptSource findViewByPath(String content) {
return new StringScriptSource(content)
}
}
class StringScriptSource implements GroovyPageScriptSource{
String content
public StringScriptSource(String content) {
this.content=content
}
@Override String suggestedClassName() { "DummyName" }
@Override boolean isPublic() { true }
@Override String getScriptAsString() { return content }
@Override boolean isModified() { true }
@Override String getURI() { "DummyURI" }
}
然后你可以使用它作为这样的:
def groovyPageLocator // Injected automaticaly to service/controller etc...
groovyPageRenderer.groovyPageLocator=new StringPageLocator()
String output=groovyPageRenderer.render(
view:'Hello2 ${user} <g:if test="${test}">TRUE!!!</g:if>',
model:[user:'test user2',test:true]
)
0
你可以制作一个你想做的控制器方法。然后你将有一个HTTP API来完成你想要的。控制器方法的模板将有一个<g:render>
标记,并进行适当的参数化。
相关问题
- 1. Grails GSP渲染问题
- 2. 以编程方式预渲染3D场景
- 3. 渲染以编程方式查看字符串
- 4. 以编程方式渲染(导出为图像)类图(Visual Studio)
- 5. React渲染,以编程方式更改单选按钮
- 6. 进程外渲染
- 7. Grails无法从插件渲染GSP
- 8. gsp模板中的渲染内容
- 9. Grails的Tomcat的渲染GSP模板
- 10. C#渲染面板编程式
- 11. 电子 - 主进程与渲染进程
- 12. 哪些工具允许以编程方式修改和渲染场景
- 13. 如何以编程方式将平面背景UIColor渲染为UIToolbar的背景?
- 14. 如何在Django中以编程方式渲染和缓存视图?
- 15. 如何以编程方式确定渲染时div标记的高度?
- 16. 渲染matplotlib数学方程
- 17. 以编程方式对MPEG-2视频进行编码
- 18. 以编程方式对Word文档进行简单的编辑
- 19. 无法进行渐进渲染
- 20. 以编程方式编码UIButton行动
- 21. 显示进度条 - 以编程方式
- 22. 以编程方式进入主屏幕
- 23. 以编程方式推进UIPageViewController - Swift
- 24. 以编程方式对行或列进行分组和取消
- 25. 以编程方式执行ssis并记录/跟踪进程
- 26. 如何以编程方式与应用程序进行交互
- 27. Python鼻子 - 以编程方式运行多进程
- 28. 以编程方式进入编辑模式TextField
- 29. CQWP仅在编辑模式下渲染
- 30. 如何以编程方式对Combobox进行排序
事实上,我想要的是'createTemplate',它将GSP文本本身作为输入,而不是文件的URI。但就是这样。谢谢。 – tuler 2010-04-19 10:33:19
如果模板的代码位于字符串中,请考虑使用SimpleTemplateEngine http://groovy.codehaus.org/api/groovy/text/SimpleTemplateEngine.html – 2010-04-19 12:17:23