For example, i can put
<g:createLink controller="user" action="show" />
inside a .gsp file and it will work nicely.
But also I'd like to use the same closure createLink
inside a .groovy file which is not part of the grails views
You can use taglib methods from Grails controllers, for example:
def userShow = g.createLink(controller:"user", action:"show")
For builtin taglibs (or those in the g namespace) you can omit the namespace prefix in the method call.
Inject the grailsApplication into your service/filter.
def grailsApplication
And get the Spring bean.
def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
def userShow = g.createLink(controller: 'user', action: 'show')
对于非托管类,您可以使用以下命令引用g
taglib:
def g = ApplicationHolder.application.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
The native way to do this as of Grails 2.0 outside of controllers (so for services, async jobs, etc) is to use the LinkGenerator class. Works everywhere and mentioned in the official docs. See example here
http://mrhaki.blogspot.ca/2012/01/grails-goodness-generate-links-outside.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.