[Seaside] Questions about double (or more) request
Mariano Martinez Peck
marianopeck at gmail.com
Wed Aug 5 18:40:50 UTC 2009
Hi! I am trying to understand how seaside handle double or more, request. I
started with the simpler example: WACounter, which has:
renderContentOn: html
Transcript show: 'renderContentOn'; cr.
html heading: count.
html anchor
callback: [ self increase ];
with: '++'.
html space.
html anchor
callback: [ self decrease ];
with: '--'
increase
Transcript show: 'increase'; cr.
count := count + 1.
(Delay forSeconds: 3) wait.
Now, suppose the counter is in 0. I click one time on '++' and wait and I
see in the transcipt:
increase
renderContentOn
Ok, perfect. New session, 0 again. Now I click on '++' but before it finish,
I click 3 times more (very quickly). I can see this in the transcipt:
increase
increase
increase
increase
renderContentOn
So, as I can see:
1) the callback (self increase in this case) is called for every click.
2) the renderContentOn isn't call until all of the self increase of that
session finish.
3) when renderContentOn is called, the webpage shows the number 1 (which is
correct instead of 4).
Now the questions are:
a) how does seaside can do that? every request has its own variables? I
think this has to be with continuations but I want to be sure.
b) which of all of the self increase is the one that is finally rendered?
the first one?
c) how can I handle the famous double commit? suppose now self increase does
something in a relational database (like persisting an order or something
like that) and I don't want it to get persisted twice or I don't want an
error because of duplicated PK.
Thanks for the help. I just want to understand how this is handle!
best,
Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20090805/1d97a761/attachment.htm
More information about the seaside
mailing list