我有一個服務來獲取和設置用戶在會話中。我想將一些用戶信息傳遞給每個視圖,如果有一個登錄用戶,並認爲過濾器將是最好的方式,所以我不必在每個控制器/操作中複製它。當我運行的應用程序,它得到這個錯誤:我可以將服務注入Grails中的過濾器嗎?
Error creating bean with name 'userService': Scope 'session' is not active for the current thread
我的過濾器看起來是這樣的:
class SecurityFilters {
def userService
def filters = {
setUser(controller:'*', action:'*') {
before = {
if (userService.isLoggedIn()) {
request.user = userService.getUser()
} else {
request.user = null
}
}
}
}
}
我知道我可以最終通過session.user訪問用戶,但我想成爲能夠調用userService.isLoggedIn(),我不能輕易通過視圖。那麼有沒有辦法將服務注入過濾器,或者我應該創建一個taglib來包裝userService.isLoggedIn()?
那麼,答案是否定的,我不能。我添加了一條評論,顯然被刪除,說我不能,並提供了一種不同的方法。 – varikin 2014-03-20 20:23:23