初始化Grails 2.4.3后,LinkGenerator对象为空

时间:2015-08-10 15:00:19

标签: grails

我正在尝试生成serverBaseUrl,然后用它填充一个字段。 我查看了很多关于如何使用LinkGenerator的说明,但我一直在LinkGenerator对象上得到一个空指针异常。

我正在与之合作:

import org.codehaus.groovy.grails.web.mapping.LinkGenerator

MyService{
    def linkGenerator

    String client_url = getServerUrl()

    String getServerUrl(){
        linkGenerator.serverBaseURL
    }
}

我尝试过使用LinkGenerator linkGenerator,重新定位它,并在Config.groovy中为grails.serverURL添加一个值。字符串client_url位于触发器上,因此在程序运行之前不会调用该方法。

我正在使用Grails 2.4.3和Java 1.8

2 个答案:

答案 0 :(得分:1)

该bean实际上称为grailsLinkGenerator,因此您需要将其声明为LinkGenerator grailsLinkGenerator(或def grailsLinkGenerator)。

我找不到它的官方文档,但请查看示例http://mrhaki.blogspot.de/2012/01/grails-goodness-generate-links-outside.html

答案 1 :(得分:1)

您的方法存在一些问题。一个是你可能想要访问grailsLinkGenerator bean。

 class MyService {
      def grailsLinkGenerator

       String getServerUrl(){
           grailsLinkGenerator.serverBaseURL
      }
 }

在你的代码中你有这个:

class MyService{
    def linkGenerator

    String client_url = getServerUrl()

    String getServerUrl(){
        linkGenerator.serverBaseURL
    }
}

除了bean名称问题之外,你还试图在依赖注入发生之前初始化client_url。目前尚不清楚为什么你需要这个属性开始,但如果你真的想要这样的东西,试试这个......

import org.springframework.beans.factory.InitializingBean

class MyService implements InitializingBean {
    def grailsLinkGenerator
    String client_url

    String getServerUrl(){
        grailsLinkGenerator.serverBaseURL
    }

    void afterPropertiesSet() {
        client_url = getServerUrl()
    }
}

我希望有所帮助。