這是一個相當奇怪的問題,我一直在這裏一段時間,所以我瘋了。springSecurityService在基本控制器中爲空
我有延伸的另一控制器,所以我可以有多個控制器繼承的方法和他們去這樣的控制器:
class EventController extends EventAwareController {
def springSecurityService
def edit = {
// this line prints out principal id
println springSecurityService.principal.id
def eventInstance = getAuthorizedEventById(params.id)
if (!eventInstance) {
flash.message = "${message(code: 'event.not.found.message')}"
redirect(action: "list", controller: "event")
return false
}
}
class EventAwareController {
def eventService
def springSecurityService
def getAuthorizedEventById(def eventId) {
def event
if (eventId) {
// this springSecurityService is null and throws an error
event = eventService.findAuthorizedEvent(eventId, springSecurityService.principal.id)
if (event) {
session.eventId = eventId
}
}
return event
}
}
EventAwareController拋出:
顯示java.lang.NullPointerException:無法在 空對象上獲得屬性'委託人' com.ticketbranch.EventAwareController.getAuthorizedEventById(EventAwareController.groovy:14)
但我在EventController中的prinln語句打印主體ID沒有任何問題?!?所以springSecurityService在EventAwareController中被注入爲null?
任何想法?建議?謝謝。
很合理,謝謝。 – Micor
非常酷的答案,我花了一個小時試圖瞭解到底發生了什麼......謝謝你幫助我理解發生了什麼:) –