When you do a #addValidatedForm, it ends up doing #addForm, which ends up being:
addForm
self addForm: #( save cancel )
By default, those will be mapped directly to a method called that way, that is, methods #save and #cancel. Those methods are sent to MAContainerComponent.
Now, see MAContainerComponent:
save
self validate ifFalse: [ ^ self ].
self commit; answer: self model
So...as you can see, indeed, the save is what takes the memento, validates it, and if correct, applies the changes from the memento to the target object. So the result of the #save will be (if success) a modified model object.
The way to persist in a database upon a save for example is to do this. Imagine you are in whatever component from your app. And you do:
newComponent := aDomainObject asComponent
addValidatedForm;
yourself.
(self call: newComponent) ifNotNilDo: [ :value |
self saveObjectToDatabase: value. ]
If you read seaside doc, you will see this code "(self call: newComponent)" does an answer of the domain object (see highligthed line above in #save), so the answer from "(self call: newComponent)" is either the updated object or nil (if clicked cancel).
Is it clear?
Cheers,