Thank you so much!! I have spent hours on this issue, now I'm finally
able to keep the execution state, thank you!
Roberto
Reinhard Poetz ha scritto:
Roberto Pierpaoli wrote:
Details:
* Cocoon 2.1.7 standalone
* JDK 1.5.0_03
* Windows 2000 SP4
I have made a small example to test the use of continuations, it is
made of a simple counter that is incremented each time the user
presses the "count" button, then, when the "stop" button is pressed,
the result page, containing the final value of the counter, is sent.
On the basis of what I have understood about continuations, I
expected that, pressing the "BACK" button of the browser, old
continuations should be restored and local variables should be
restored with them, for example: I press "count" five times, so the
value is now 5 (assuming the initial value equal to zero), now I
press the back button two times (I expect the value to be restored to
three) and in the end I press the "stop" button ... but the result
shown is still 5, and not 3 as expected!
What's wrong with my aproach?
The official documentation says:
/"With continuations in the language, you can essentially store the
continuation of |sendPageAndWait()| (think of all the stack trace,
and the program counter), put it in a global hash table associated
with an id. The id is then encoded in the |response.xml| page as an
URL. When the user clicks on that URL, on the server side the
associated continuation is resumed. Resuming the processing happens
as if nothing was stopped, you get all the stack trace back, and all
the local variables.//
So instead of using beans to store things in session, you use normal
variables in a program. Since each user has its own version of the
program, all the local variables in the program are separate between
users.
With this approach clicking the Back button in the browser is no
longer a hassle to deal with for you as a server-side programmer.
They will simply refer to past continuations objects, which have
their own state of the local variables./
/Since continuations are objects, you can also store them in a
database, for really long-lived session, just like you do with
session beans."/
Any help or suggestion is very appriciated!
What you explained is correct, the docs are not very clear about this.
All continuations of *one continuations tree* share all local
variables. Global variables are shared by all continuation trees.
If you want to bahaviour that a variable is bound to a continuation
(and not the tree it belongs to) you have to create a PageLocal variable:
var pageLocal = cocoon.createPageLocal();
pageLocal.counter = ...
HTH
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]