2011-07-01 81 views
0

我想從注入的服務初始化命令字段。Grails命令對象@PostConstruct什麼的?

所以我需要params分配給前場執行命令的方法後已完全初始化,但

我該怎麼辦?好的,我可以在構造函數中手動獲取一個Service bean。有更好的方法嗎?

@PostConstructInitializingBean沒有好運 - 看起來Command不是一個bean,對吧?

的Grails 1.3.5

回答

1

你是對的命令不是一個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 
    } 
} 
+0

謝謝。作爲最後的手段,我會這樣做。基本上,這是手動重新創建'Command'功能,因爲'createCommandInstance()/ bindData()'需要在每個動作中。現在,我將堅持通過'Command'構造函數中的'ApplicationContext'訪問服務bean - 它向Command添加了額外的代碼,但不會在控制器上重複代碼。 –