gpt4 book ai didi

grails - 从服务中的 ApplicationTagLib 中 createLink

转载 作者:行者123 更新时间:2023-12-02 14:22:25 24 4
gpt4 key购买 nike

我正在尝试了解如何使用从服务调用的 ApplicationTagLib 中的 createLink 创建链接。

Grails: 3.2.8

代码:

def applicationTag = new ApplicationTagLib()

def abc = application.Tag.createLink(controller:"accomodate", action:"menu", id:4)

错误:

org.grails.taglib.GrailsTagException: Tag [createLink] does not exist. No corresponding tag library found.

我对这个版本非常陌生。如果您帮助我找出我的代码存在什么样的错误,我将非常感激。

最佳答案

试试这个:

import grails.core.support.GrailsApplicationAware
import grails.core.GrailsApplication
import grails.web.mapping.LinkGenerator
class MyService implements GrailsApplicationAware{
GrailsApplication grailsApplication
def config
LinkGenerator grailsLinkGenerator

def myMethod() {

def url = hostname+grailsLinkGenerator.link(controller: 'someController', action: 'something', params:[token:something], absolute: 'false')
}
void setGrailsApplication(GrailsApplication ga) {
config = ga.config
}
}

...

String hostname=grailsApplication.config.myApp?.hostName
def url=hostname+grailsLinkGenerator.link(controller: 'someController', action: 'something', params:[token:something], absolute: 'false')

def url=grailsLinkGenerator.link(controller: 'someController', action: 'something', params:[token:something], absolute: true)

ED2A如果你必须这样做

我有 applicationTag lib 以这种方式工作:

import grails.util.Holders
import org.grails.plugins.web.taglib.ApplicationTagLib

class SomeService {

def g = Holders.grailsApplication.mainContext.getBean(ApplicationTagLib)


def someMethod() {
def aa = g.createLink('something')
}
}

这种方式的问题是,如果您开始点击表示层引用,那么您可能会得到No thread-bound request found。特别是来自 quartz 作业和真实用户范围之外的任何调用。您可以使用this example来解决所有这些问题。 。但是,当上面的 grailsLinkGenerator 示例不会解决任何可能出现的问题时,为什么还要经历这一切

关于grails - 从服务中的 ApplicationTagLib 中 createLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com