Посмотрите на следующий класс домена Grails, который изменяет значение в установщике, если объект сохраняется в первый раз (если у него нет идентификатора):
class Idtest {
String name
void setName(String name) {
if(!this.id)
this.name = name + "TEST"
else
this.name = name
}
}
Если я сгенерирую представления и контроллер с generate-all
, запустите приложение и введите «привет» в сгенерированную форму, «helloTESTTEST» будет сохранено.
Функция save
выглядит следующим образом:
def save = {
def idtestInstance = new Idtest(params)
if (idtestInstance.save(flush: true)) {
flash.message = "${message(code: 'default.created.message', args: [message(code: 'idtest.label', default: 'Idtest'), idtestInstance.id])}"
redirect(action: "show", id: idtestInstance.id)
}
else {
render(view: "create", model: [idtestInstance: idtestInstance])
}
}
Почему сеттер вызывается дважды?