[Seaside] Closures not working even with fixTemps?

Lukas Renggli renggli at gmail.com
Tue Dec 18 19:18:08 UTC 2007


> renderNewModelButton: html
>   { M1. M2 } do:
>     [ : modelClass |
>        html submitButton
>        callback:
>          [ | newModel |
>            self session magma commit: [
>              newModel := self repository models add: modelClass new.
> 1>>          self halt] fixTemps.
>              self halt.
> 2>>          self call: (newModel viewerClass new model: newModel).
>              selectedModel := nil ] fixTemps;
>        value: #New , ' ' , modelClass name ]

It looks like this is indeed a bug in Squeak, as there are two blocks
that mess around and copy their home contexts.

As a first step I would put all the callback-code into a separate
method taking the modelClass as an argument. It is good practice not
to mix view (rendering) and controller (callbacks) functionality
anyway.

You don't have to send #fixTemps to the callback-block, as Seaside
already does this for you. Moreover, it is called #fixCallbackTemps
nowadays.

Cheers,
Lukas

-- 
Lukas Renggli
http://www.lukas-renggli.ch


More information about the seaside mailing list