假設我的數據庫中存儲了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. 如何以編程方式渲染a4j:outputPanel
- 2. Grails GSP渲染問題
- 3. 如何以編程方式合併和渲染3D模型?
- 4. 渲染以編程方式查看字符串
- 5. React渲染,以編程方式更改單選按鈕
- 6. jQuery FullCalendar以編程方式更改事件渲染顏色
- 7. 以編程方式渲染(導出爲圖像)類圖(Visual Studio)
- 8. 如何以編程方式渲染Drupal 7中的Openlayers地圖
- 9. 以編程方式預渲染3D場景
- 10. 渲染Dundas圖表以編程方式拋出異常
- 11. 進程外渲染
- 12. Grails無法從插件渲染GSP
- 13. gsp模板中的渲染內容
- 14. Grails的Tomcat的渲染GSP模板
- 15. C#渲染面板編程式
- 16. 電子 - 主進程與渲染進程
- 17. 在Rails中進行if/else局部渲染的快捷方式?
- 18. 是否有可能以編程方式利用.NET中的ie9渲染引擎?
- 19. 哪些工具允許以編程方式修改和渲染場景
- 20. 如何以編程方式渲染drupal 7 page.tpl.php中的自定義字段?
- 21. 如何以編程方式確定渲染時div標記的高度?
- 22. 如何以編程方式將平面背景UIColor渲染爲UIToolbar的背景?
- 23. 如何在Django中以編程方式渲染和緩存視圖?
- 24. 渲染matplotlib數學方程
- 25. 以編程方式對Word文檔進行簡單的編輯
- 26. 以編程方式對MPEG-2視頻進行編碼
- 27. 如何以編程方式選擇一個UITextField進行編輯
- 28. 無法進行漸進渲染
- 29. 以編程方式填充圖像以進行動畫
- 30. textview的背景可以以編程方式進行縮放?
事實上,我想要的是'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