I have given Seam a PAGE context. This context basically lets you attach state to an actual JSF page, during the request that renders the page, then have it available to you during the next (postback) request that originates from that page. At the end of the second request, the state is destroyed.
The actual state in the page context is serialized to and from the client, which allows us to support backbuttoning without killing the server by filling it up with server-side continuation state.
This is excellent stuff for implementing clickable lists which are backed by data that could change between rendering the list and processing the postback.
A major problem with JSF's DataModel stuff is it all works via the row index, which can easily become inconsistent if the data changes. They really should have given DataModel the ability to propagate meaningful identifiers, such as PKs.
I spent all of yesterday obsessing over how to solve this problem the Right Way, and I think I've finally got a sufficiently robust and intuitive construct.