-1

| Grails 版本:3.0.7

| Groovy 版本:2.4.4

| JVM版本:1.8.0_51

我正在尝试安装 grails 插件:Slug Generator 0.5 ( https://grails.org/plugin/slug-generator )

但是,服务依赖注入在域类或服务中都无法正常工作,并且始终为空引用。

这不是我第一次遇到插件无法成功注入服务:Grails Geocode plugin dependency injection issue

基本上,我似乎无法在我的应用程序中使用某些插件,因为我不能指望服务依赖注入工作。

如果有人可以提供一些见解,我将不胜感激。

我正在遵循以下示例代码:

class Dummy {
    def slugGeneratorService

    String name
    String slug = ""

    def beforeInsert() {
        this.slug = slugGeneratorService.generateSlug(this.class, "slug", name)
    }

    def beforeUpdate() {
        if (isDirty('name')) {
            this.slug = slugGeneratorService.generateSlug(this.class, "slug", name)
        }
    }
}

这是一个示例错误日志:

Caused by: java.lang.NullPointerException: Cannot invoke method generateSlug() on null object

我注意到的一件事是,在命令行中,以下内容不返回任何内容:

$ grails 列表插件 | grep 蛞蝓

但是,如果我搜索另一个插件,我会得到一个结果:

$ grails 列表插件 | grep 乔达

乔达时间

我可以清楚地看到(通过 IntelliJ)slug 生成器插件在类路径中,我实际上可以通过外部库访问所有源代码。

也许这是对问题的暗示?

4

1 回答 1

0

好的,这似乎是因为我愚蠢地试图在 grails 3.x 插件中使用 grails 2.x 插件。

将插件从 2.x 升级到 3.x 需要执行多个步骤,所有步骤都在 grails 文档中详细说明。

我的直接解决方案是简单地创建一个新服务并将插件中的代码复制到我的应用程序中。工作得很好。

Grails 3.x 插件:https ://bintray.com/grails/plugins Grails 2.x 插件:https ://grails.org/plugins/

除非您通过 grails 站点导航,否则这并不明显。例如,如果您从 Google 直接进入插件页面,则兼容性显示为 2.5.x >

然而,这实际上似乎意味着大于 2.5.x 但小于 3.x

希望这对其他人遇到这种情况有所帮助。

于 2016-02-18T09:22:26.443 回答