Grails服务 - 从 Controller 调用方法?

标签 grails service

我正在尝试从 Controller 调用 grails 服务上的方法,但看起来执行只是跳过了方法调用。
我尝试在方法中使用断点调试应用程序,但它从未被命中。

我的服务(使用 grails create-service 生成)是:

class FormatterService {
    static transactional = false

    def formatList (List<Host>, String fmt) {
        OutputObject somePOGO = new OutputObject();
        (snip)
        return somePOGO
    }
}

然后在我的 Controller 上我有:
class HostController {
    def formatterService

    def getHostsByLabels = {
        (snip)
        OutputObject o = formatterService.formatList(someHosts,params.format)
        (snip)
    }
}

formatterService.formatList方法应该在 Controller 中调用,执行只是跳到下一行,没有输出打印到控制台,方法中的断点也不会被命中。 OutputObject o 引用之后为空。

这里有什么问题?从我的角度来看,这可能是一个非常基本的错误,但我就是不能把我的手指放在它身上......

最佳答案

对我来说,这似乎是一场元编程灾难……

好吧,有 3 个要调试的测试:

_1)首先尝试做

    println formatterService
    println formatterService.getClass()

只是为了检查它注入(inject)的 bean 是否是所需的,一些插件有时会注入(inject)覆盖默认值的 bean。

_2) 确保名称为 的方法"格式列表"不会通过任何插件或核心代码的元编程注入(inject)您的服务。

测试方法很简单:只需将方法的名称更改为某个 Unrealistic One,例如:“formatListabcdewdw”,然后调用那个。如果它有效,那么它的方法会覆盖问题。

如果您更热情,可以通过以下方式查看元方法
println formatterService.metaClass.methods

_3) 只需尝试将“params.format as String”作为方法调用中的最后一个参数。\

.

希望这些有帮助,请让我知道调查结果,我很想知道.. :)

关于Grails服务 - 从 Controller 调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435287/

相关文章:

grails - 如何从grails中的url获取Get参数

grails - 从插件中获取自定义 grails 插件版本

java - 如何使用此 Groovy 代码从 Groovy 类获取数据源连接?

grails - 保存第二版本的grails对象

asp.net - 长时间运行的 http 进程 - 如何放入单独的进程?

android - 如果我重新安装我的应用程序,我的应用程序的辅助功能服务将无法使用

linux - 获取正在运行的服务并输出Linux上的服务版本

Spring:在启动时配置应初始化哪些服务 bean 的最佳方法是什么?

android - 如何识别上次使用 Android 设备的时间

grails - Grails中的Config.groovy:grails.views.default.codec-为什么选择base64?