On 1/24/06, Werner Punz <[EMAIL PROTECTED]> wrote:
> As for the checkpoint, I cannot say it exactly (maybe matthias can jump
> in) it probably will behave like every other page hitting the back
> button with no history, that is my closest assumption on what will happen.

And how exactly that would be? (This is a real question not a sarcasm).

> If you do not want the history, simply turn it off, it is parametrized
> anyway ;-)

Why would I want to turn it off? Why this particular choice of
page/app synchronization was made?

> The whole back restory history stuff has been enabled shortly after
> 1.1.1 so it is in the trunk currently.
> (And works amazingly well, I must say)

I want to believe you, but I would like to hear more elaborate answers
to my questions :-) I have a lot of them, I would appreciate answers
or links to them if they are in the FAQ somewhere.

Michael.

> Michael Jouravlev schrieb:
> > Seems that JSF-related flame on TSS
> > http://www.theserverside.com/news/thread.tss?thread_id=38601 died, and
> > I have left without an anwser ;-) So I am repeating the question here
> > with some modifications in hope to get "i" dotted and "t" crossed.
> >
> > The question is: how history lists and in particular Back button, is
> > supported in JSF, including:
> >
> > * JSF spec
> > * JSF reference implementation
> > * MyFaces
> > * Shale
> > * Other
> >
> > I searched Net just a bit, and found indications that Back button
> > issues regarding component state are resolved in 1.2 spec:
> > http://weblogs.java.net/blog/edburns/archive/2005/08/javaserver_face_3.html
> >
> > I downloaded spec and glanced across but did not find the answers.
> > Granted, I did not read it thoroughly. If the answers are there just
> > tell me so, if you can point to specific sections that would be great.
> > JSF 1.2 spec does not contain expressions "back button" or "history".
> > The official HTTP term for browser page history is "history list".
> >
> > The spec reads that if request is not a postback, a response should be
> > rendered (using current state, right?). If request is a postback, then
> > viewsate should be restored. Depending on using <redirect/>
> > instruction in config file, both cases are possible when clicking Back
> > button unless renderkit uses some sort of token and detects that the
> > received POST request is actually a resubmit of old data and should
> > not be considered as postback.
> >
> > Anyway, in either case JSF has to [optionally restore viewstate] +
> > render view according to state. The question is, where the state comes
> > from? What are the rules for buffering/queueing/caching state?
> >
> > Werner Punz wrote: "MyFaces is not a project like Tapestry which tries
> > to built its own framework but it tries to stay within the JSF
> > standardization thats basically it." What exactly does JSF spec say
> > about saving/restoring state in case of history list navigation?
> >
> > Werner explained how RI/MyFaces solved history list issue: "The back
> > button issue is solved both in the RI as well as in MyFaces on server
> > side state saving. There is code which restores the last 20 possible
> > states in case of a back to my knowledge." I could not find details of
> > this process neither in section 2.2, Standard Request Processing
> > Lifecycle Phases nor in section 2.5.3 State Management. The latter
> > section seems unfinished.
> >
> > I see the following options for browser/server behavior when Back
> > button is clicked:
> >
> > === crosspost from TSS starts ===
> > 1) Click Back, page is cached, or page is non-cached but browser
> > honors history list (Opera, see HTTP 1.1 section 13.13). Stale page is
> > shown, server is not notified ==> server and page are out of sync.
> > 2) Click Back, page is non-cached and browser agrees to reload a page
> > from server (Firefox, MSIE, other). Page is updated according to
> > server state, say by changing "Add" button to "Edit" button for the
> > same data or by displaying a different subview ==> server and page are
> > in sync.
> > 3) Click Back, page is non-cached and browser agrees to reload a page
> > from server. Application recognizes that browser reloads a page
> > corresponding to previous state. Viewstate is rolled back, page is
> > displayed with data corresponding to that state. ==> server and page
> > are in sync.
> >
> > Seems like MyFaces uses approach (3), I prefer approach (2).
> >
> > * What happens in case (3) when a user clicks Forward after clicking
> > Back? Will the viewstate be rolled forward?
> > * How does viewstate correspond to model state in case (3)? What if I
> > use third party to charge a credit card, how do I roll the business
> > transction back? And then roll it forward?
> > * Approach (3) works when page *is* actually reloaded by browser. What
> > if it is not? The browser would show stale page which would be out of
> > sync with server.
> >
> > So, approach (3) works only if page is actually reloaded, as well as
> > approach (2). With both techniques, browser and server go out of sync
> > if page is not reloaded. So, approach (3) still sucks when page is
> > being cached, but requires more efforts when page is reloaded. Is the
> > result worth the labor? Do you really think that a user who just payed
> > for his new digital camera online, expects to see the same "Confirm
> > your order" page again when he hits Back button? I think that he would
> > shit in his pants trying not to click submit button again. I would
> > prefer to see "Your order was processed" and "Show Order Info" button
> > instead.
> > === crosspost from TSS ends ===
> >
> > If I understand correctly, JSF uses approach (3) from the list below.
> > Am I right and why it was chosen instead of approach (2)? What happens
> > if I use third party to process a request, say to charge a credit
> > card, and a user clicks "Back"? How can I give hints to state saving
> > mechanism that checkpoint is reached and there is nowhere to rollback?
> > What JSF will do if there is nowhere to rollback: will show stale page
> > with corrupted data or will show different version of the page
> > corresponding to *current* state? If latter, why it cannot be default
> > behavior?
> >
> > By the way, seems that Wicket guys have the same notion of "Back
> > button support" as MyFaces.
> >
> > Michael J.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to