0
我想從注入的服務初始化命令字段。Grails命令對象@PostConstruct什麼的?
所以我需要params
分配給前場執行命令的方法後已完全初始化,但。
我該怎麼辦?好的,我可以在構造函數中手動獲取一個Service bean。有更好的方法嗎?
與@PostConstruct
或InitializingBean
沒有好運 - 看起來Command不是一個bean,對吧?
的Grails 1.3.5
我想從注入的服務初始化命令字段。Grails命令對象@PostConstruct什麼的?
所以我需要params
分配給前場執行命令的方法後已完全初始化,但。
我該怎麼辦?好的,我可以在構造函數中手動獲取一個Service bean。有更好的方法嗎?
與@PostConstruct
或InitializingBean
沒有好運 - 看起來Command不是一個bean,對吧?
的Grails 1.3.5
你是對的命令不是一個bean。您可以通過服務方法實例化命令實例,並在那裏進行初始化並將實例返回給控制器。比調用控制器的bindData與返回的實例是這樣的:
// controller code
def myService // injected
def action = {
def command = mySerivce.createCommandInstance()
bindData(command, params)
}
// service code
class MyService {
def createCommandInstance() {
def cmd = new MyCommand()
doSomeInitializationWithCommand(cmd)
return cmd
}
}
謝謝。作爲最後的手段,我會這樣做。基本上,這是手動重新創建'Command'功能,因爲'createCommandInstance()/ bindData()'需要在每個動作中。現在,我將堅持通過'Command'構造函數中的'ApplicationContext'訪問服務bean - 它向Command添加了額外的代碼,但不會在控制器上重複代碼。 –