2009-07-28 109 views
15

例如,我可以把我可以在GSP之外使用grails標籤嗎?

<g:createLink controller="user" action="show" /> 

一個.gsp文件中,它會很好地工作。

而且我想使用相同的閉合createLink一個.groovy作爲文件,該文件是不是Grails的意見

回答

20

您可以使用從Grails的控制器標籤庫方法的一部分內,例如:

def userShow = g.createLink(controller:"user", action:"show") 

對於內置標記庫(或g命名空間中的那些標記庫),可以省略方法調用中的命名空間前綴。

+3

必須有比這更多了,在一個Grails控制器只用上面的代碼提供`錯誤= groovy.lang.MissingPropertyException:沒有這樣的屬性:g`。 – aroth 2012-10-11 00:53:06

+0

絕對是更多的!請參閱Matt Christianson關於如何解決「沒有這樣的屬性:g」錯誤的答案。 – Twelve24 2016-03-21 22:59:02

14

將grailsApplication注入到服務/過濾器中。

def grailsApplication 

並獲得Spring bean。

def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib') 
def userShow = g.createLink(controller: 'user', action: 'show') 
7

對於非託管類,您可以參考g的taglib有:

def g = ApplicationHolder.application.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib') 
相關問題