0

注入されたサービスからコマンドフィールドを初期化したい。

したがって、コマンドのメソッドを完全に初期化した、フィールドに割り当てる前に実行する必要があります。 params

どうすればいいですか?OK、コンストラクターで手動でServiceBeanを取得できます。より良い方法はありますか?

運がなかった、@PostConstructまたはInitializingBean-コマンドは豆ではないようですよね?

Grails 1.3.5

4

1 に答える 1

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
    }
}
于 2011-07-02T19:55:48.670 に答える