gpt4 book ai didi

服务中的 grailsApplication null

转载 作者:行者123 更新时间:2023-12-04 20:43:37 25 4
gpt4 key购买 nike

我的 Grails 应用程序中有一个服务。但是,我需要在我的应用程序中访问配置以进行某些配置。但是当我尝试使用 def grailsApplication在我的服务中它仍然为空。

我的服务在“服务”下。

class RelationService {

def grailsApplication

private String XML_DATE_FORMAT = "yyyy-MM-dd"
private String token = 'hej123'
private String tokenName
String WebserviceHost = 'xxx'

def getRequest(end_url) {

// Set token and tokenName and call communicationsUtil
setToken();
ComObject cu = new ComObject(tokenName)

// Set string and get the xml data
String url_string = "http://" + WebserviceHost + end_url
URL url = new URL(url_string)

def xml = cu.performGet(url, token)

return xml
}

private def setToken() {
tokenName = grailsApplication.config.authentication.header.name.toString()
try {
token = RequestUtil.getCookie(grailsApplication.config.authentication.cookie.token).toString()
}
catch (NoClassDefFoundError e) {
println "Could not set token, runs on default instead.. " + e.getMessage()
}
if(grailsApplication.config.webservice_host[GrailsUtil.environment].toString() != '[:]')
WebserviceHost = grailsApplication.config.webservice_host[GrailsUtil.environment].toString()

}

}

我看过 Inject grails application configuration into service但它并没有给我一个答案,因为一切似乎都是正确的。

但是我这样称呼我的服务: def xml = new RelationService().getRequest(url)
编辑:

忘记输入我的错误,即: Cannot get property 'config' on null object

最佳答案

您的服务是正确的,但您调用它的方式不是:

def xml = new RelationService().getRequest(url)

因为您正在“手动”实例化一个新对象,所以您实际上绕过了 Spring 进行的注入(inject),因此“grailsApplication”对象为空。

您需要做的是使用 Spring 注入(inject)您的服务,如下所示:
class MyController{

def relationService

def home(){
def xml = relationService.getRequest(...)
}

}

关于服务中的 grailsApplication null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13532360/

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