Командный объект Grails @PostConstruct или что-то еще? - PullRequest
0 голосов
/ 01 июля 2011

Я хочу инициализировать поле Команды из внедренного Сервиса.

Поэтому мне нужно выполнить метод Команды после , когда она полностью инициализирована, но до params назначено для полей.

Как я могу это сделать?Хорошо, я могу получить компонент Service вручную в конструкторе.Есть ли лучший способ?

Не повезло с @PostConstruct или InitializingBean - похоже, что Command - это не бин, верно?

Grails 1.3.5

1 Ответ

1 голос
/ 02 июля 2011

Вы правы, команда не является бобом. Вы можете создать экземпляр команды с помощью служебного метода, выполнить там инициализацию и вернуть экземпляр обратно в контроллер. Затем вызовите 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
    }
}
...