[Bese-devel] [ucw] back to a past which doesn't exist anymore

Marco Baringer mb at bese.it
Mon Feb 9 22:31:47 UTC 2004


while playing around with transactions i ran into the following 
situation:

suppose components A and B are called sequentially within a 
transaction. after the transaction terminates the user is taken to the 
"final" component (whatever that may be). now let's suppos the user 
returns to the page rendered by A and attempts to follow a link, at 
this point our transaction voodoo comes in and simply returns the user 
to the "final" component, and this is Good. however let's suppose the 
user then returns again but this time goes back to a page rendered by B 
and follows a link.

Ascii art:

t ->

A [follow a link] B [follow a link] C [back button * 2] A [back button 
* 2] B [follow a link] ERROR

Since the user followed a link on the A "page" (ie the output of the 
component A) the session stack was wiped from A onwards, hence we no 
longer have any reference the actions available from B and the server 
errors.

This is not only a transaction issue, any time we go back to a 
componnet and then go back to a component which came after the 
component we went back to we'll run inte this inexistent action error. 
Having the session stack be a tree would solve this, but what would we 
gain? We could simply incode session + frame + action in a single value 
and put them in a application wide hash table, then we could update all 
the actions which a back action has elimintated, but this would mean 
that we'd need to look a basically global variable every time we get a 
request, which doesn't seem like a great idea either.

so, i'm stumped.

p.s. - does anybody follow ucw-devel at common-lisp.net from nntp?

--
Marco
Ring the bells that still can ring.
Forget the perfect offering.
There is a crack in everything.
That's how the light gets in.
	-Leonard Cohen





More information about the bese-devel mailing list