gpt4 book ai didi

grails - 在 Controller 中调用服务时,无法在空对象上调用方法pullLogs()

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

我在堆栈溢出附近进行了搜索,并发现了一些类似的问题实例,但是完成的修复似乎对我的有效。 (类似示例之一:Grails - Can't call service from Controller --> always get "Cannot invoke method on null object error")

我的服务可以这样总结

class AuditService {


AuditService auditService

def sql
def dataSource
static transactional = true


def pullLogs(String username, String id) {
if(username != null && id != null) {

sql = new Sql(dataSource)
println "Data source is: " + dataSource.toString()
def schema = dataSource.properties.defaultSchema

sql.query('select USERID, AUDIT_DETAILS from DEV.AUDIT_LOG T WHERE XMLEXISTS(\'\$s/*/user[id=\"' + id + '\" or username=\"'+username+'\"]\' passing T.AUDIT_DETAILS as \"s\") ORDER BY AUDIT_EVENT', []) { ResultSet rs ->
while (rs.next()) {
def auditDetails = new XmlSlurper().parseText(rs.getString('AUDIT_EVENT_DETAILS'))
println auditDetails
}
}
sql.close()
}
}

}

我试图称呼它的方式是这样的
UserController {

def auditService


show(Long id){

def UserInstance = User.get(id)

//Also tried def auditResults = auditServices.pullLogs(UserInstance.username, UserInstance.id)
def auditResults = auditServices(UserInstance.username, UserInstance.id)
System.out.println(" "+ auditResults)
[UserInstance: UserInstance,params:params]
}
}

我得到的错误是
Class:
java.lang.NullPointerException
Message:
Cannot invoke method pullLogs() on null object

我很沮丧。 (询问给我)

任何想法/建议/帮助都非常有用!

谢谢!

最佳答案

在UserController中,

def auditService

但是之后
def auditResults = auditServices(UserInstance.username, UserInstance.id)

应该是
def auditResults = auditService.pullLogs(UserInstance.username, UserInstance.id)

至于“FactoryBean未初始化”错误,为此,您只需删除
AuditService auditService

AuditService内部开始-不需要,因为如果您需要从自己的代码中引用AuditService,则可以只使用 this

关于grails - 在 Controller 中调用服务时,无法在空对象上调用方法pullLogs(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16488105/

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