В качестве альтернативы комментарию Ant, вы можете использовать session
, но с хранением недоменного объекта или простой карты.Это, безусловно, приведет к большой дополнительной сложности, и веб-потоки do обеспечивают большую защиту от случайных кнопок назад и т. Д.
Грубая идея:
вgrails-app/domain
class Widget {
String name
int id
// constraints, etc
}
in grails-app/controllers
class WidgetCommand {
// setup your command
}
class WidgetController {
def savePage1 = { WidgetCommand cmd ->
// validate, etc
def widget = session.tempWidget ?: [:]
widget.putAll(cmd.properties)
session.tempWidget = widget
[widget: widget]
}
def savePage2 = { WidgetCommand cmd ->
// etc
}
def savePage3 = {
// or something similar here
def finalWidget = new Widget(session.tempWidget)
finalWidget.save()
}
}
Вы можете попытаться сохранить фактический объект домена непосредственно в памяти, но я считаю, что он будет автоматически сохранен при закрытии сессии, если выредактируете объект (в отличие от новых), и вам придется повторно связать его с сеансом Hibernate.