views:

9

answers:

1

Hi - I have the following 3 simple pages in a JSF app.

index.html
start.html
confirmSuccess.thml

start.html is a simple form, with a "GO!" button and a html link back to index.html. When the user clicks GO! it kicks of a transaction in the backing bean. If this fails, I want start.html form redisplayed, but with an error explaining failure. So, I have an error flag set in my backing bean, and the error display is managed using rendered="" attribute.

Simple, right?

So, how do I handle the case where the user then clicks the html link to index.html, and from index.html clicks the link back to start.html, or simply clicks back. That is, how do I clear intercept that user has departed the start page, and clear the error flag so I know second time around that I don't need to display the error.

Is this possible without getting deep into the bowels of JSF lifecycle management?

Note The 3 pages listed is a gross oversimplification of my webapp, in reality, there multiple pages a user can go to from start.html, so I don't want to have a solution where I need to track the page someone arrives at to clear flags for start.

+1  A: 

Sounds like you're transferring request scoped data around in a session scoped bean. Make the bean which holds request scoped data request scoped and instruct the browser to not cache the dynamic pages so that it is forced to re-request the page from the webserver instead of from its history.

That said, I'd rather use a combination of FacesContext#addMessage() and <h:messages/> to display errors. You can use an clientId of null to denote global message. They are in turn already request based so that you don't need to hassle with a flag to render/unrender an error display.

E.g.

public void submit() {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Error!"));
}

with

<h:messages globalOnly="true" />
BalusC
Thanks - You're right about the request/session scoped root cause. In any case, I'll go for the <h:messages/> idea.
Kevin
You're welcome.
BalusC