<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Petr,<div class=""><br class=""></div><div class="">Good questions.</div><div class="">The problem you are describing is about concurrent changes to the datamodel and how you can keep the Seaside component state of concurrent sessions in sync.</div><div class=""><br class=""></div><div class="">First off, Seaside backtracking support is mostly intended for UI state and not model state.</div><div class="">Inevitably, the two are connected, as illustrated in your example of a list of items in a db where each data record corresponds to a UI component.</div><div class=""><br class=""></div><div class="">You can make changes to the component state in the action phase of a callback (e.g. in the callback attached to an anchor), however there is no way to refresh the state when the user uses the back button and deal with concurrent changes to the state. </div><div class=""><br class=""></div><div class="">An interesting similar discussion that proposes a way to avoid browser caching when the back button is used is described here: [1].</div><div class=""><br class=""></div><div class="">Next, I think there are a couple of options:</div><div class=""><br class=""></div><div class="">- Make sure the Seaside component state cannot be affected by concurrent changes. This means that you would not use separate components per record in your list. Instead, an entire list would be encapsulated in a single component and its rendering code directly uses the state of the data model rather than state stored in the UI.</div><div class=""><br class=""></div><div class="">- Fiddle around with the continuation restore code in WASnapshot and create separate WARenderPhaseContinuation classes for use in your application that restore the session state _and_ verify its consistency with the datamodel. You can do this cleanly as Seaside provides support to use your own continuation classes and thereby customize what needs to happen when restoring the session state. If you use the method to prevent caching described in [1], you can probably make something interesting with that.</div><div class=""><br class=""></div><div class="">This last option is an interesting one, but I don’t really have the time to dive into it to give it a try (though my fingers are iching ;)</div><div class=""><br class=""></div><div class="">[1] <a href="http://forum.world.st/Re-render-component-on-back-button-td4726578.html" class="">http://forum.world.st/Re-render-component-on-back-button-td4726578.html</a></div></div></body></html>