2014-06-18 228 views
1

我確信我以前見過這個,但現在我找不到它。當我嘗試這樣做:springSecurityService的默認字段值

class Foo { 

    def springSecurityService 
    User userInstance = springSecurityService.currentUser 

} 

我得到朝編譯結束以下錯誤:

無法獲取財產「currentUser」空對象

我不能設置具有服務的默認用戶?

  • 運行Grails 2.2.0。
  • Foo是一個域類。

編輯

我嘗試了以下解決方案與javax.annotations.PostConstruct,但標註的方法永遠不會被調用。我不認爲這是被調用的,因爲我把一個println聲明,它不被調用。我正在用new Foo()實例化我的課程。

回答

2

試試你的代碼不起作用這個代替

import javax.annotation.PostConstruct 

class Foo { 

    def springSecurityService 
    User userInstance 

    @PostConstruct 
    private void init() { 
     userInstance = springSecurityService.currentUser 
    } 
} 

的原因是因爲你想設置userInstancespringSecurityService之前一直依賴注入。

我假設Foo是一個域類,如果它是src/groovy中的類,那麼這種方法將不起作用,因爲這些類不受依賴注入的約束。

+0

是的,這是一個域類。我剛剛得出的結論是,依賴注入還沒有發生,並不確定最好的解決方法是什麼。謝謝! –

+0

呵呵。好吧,我沒有收到編譯錯誤,但是'init()'永遠不會被調用:| –

+0

@CharlesWood爲什麼您確實需要將當前用戶存儲在字段中,因爲您始終可以通過'springSecurityService'訪問它? –