У меня есть небольшой проект Grails, который я пишу как учебное упражнение.Он собирает некоторый пользовательский ввод из формы (например, введите два числа для добавления), затем вызывает службу для обработки этих данных (например, добавляет два числа) и, наконец, отображает результаты на другой странице.
Когда я включил ведение журнала SQL, я заметил, что данные, которые вводит пользователь, сохраняются в базе данных перед вызовом метода service внутри контроллера.
Как мне предотвратить это?Я хотел бы, чтобы ОДНА запись в базу данных была завершена после обращения к методу обслуживания и без ошибок.
Сохранение метода из кода контроллера:
def save() {
def myInstance = new myDomainClass(params)
myInstance.sessionId = session.id
myService argh = new myService()
// wtf does this do?
if (!myInstance.save(flush: true)) {
render(view: "create", model: [myInstance: myInstance])
return
}
// Execute the api and process the results. what is writing the user input to the database before this call?!?!?!?!
def results1 = argh.executeApi(myInstance)
// if the results are null throw an error
if (results1 == null) {
flash.message = message(code: 'api.null.error')
render(view: "create", model: [apiInstance: apiInstance])
return
} else {
forward(action: "list", id: 2, model: [apiInstanceList: Api.list(params), apiInstanceTotal: Api.count()])
}
}
Указатели или помощь приветствуются.