I was reading Balusc blog on PRG pattern in JSF where it is mentioned that :
This article is targeted on JSF 1.2. For JSF 2.0, this can easier be achieved using the new Flash scope.
I wanted to find out how can flash
scope help us in achieving the same ?
Call
Flash#setKeepMessages()
withtrue
before render response phase to instruct JSF to store the faces messages in the flash scope and addfaces-redirect=true
query string parameter to the outcome to perform a redirect.This way there's no need for a phase listener which collects the faces messages from the faces context and stores them in the session before redirect and removes them from the session on the firstnext request and re-adds them to the faces context after redirect.
The flash scope works roughly the same way. The messages are stored in the session by an unique identifier which is in turn been passed as a cookie in the response and those messages (and the cookie) are been removed from the session on the firstnext request which has passed the cookie back (which is, after all, a more robust implementation although the chance is very little that an enduser will send 2 HTTP requests on the same session at exactly the same moment — or it must be a robot).