Rich Faces State API allows easily to define some set of states for the pages and any
properties sets for these states.

Imagine one state as a set of named value-bindings method-bindings and some
additional properties to be used after the state is activated. Hence you could define
inputs values, controls labels and actions, rendering conditions and etc.
using the same state variables which will have different values for every state.

The next small example panel
has two states: login and register. Let's list the changes between
login and register.

Confirmation field for password should appear in a register state

Method bindings should differ for the action button in every state

Value bindings for the fields could be different between states

Some labels should be changed between states

Also there should be a link which will switch states from login to register

Actually states are a map where the entry key is a name of the state and value
is a state map. Particular state map has entries with some names as keys and
any objects as values. Thus any value or method bindings or just simple state
constants could be saved in State map.

Rich Faces state API implements states change as a standard JSF navigation.
Action component should just return outcome, and our extension for JSF
navigation handler will check whether this outcome is registered as state change
outcome. If such state change outcome is found, the corresponding state will be
activated and in other case, it will call standard navigation handling

There is step by step instructions telling how to configure Rich Faces states
manager for existing JSF application in details tab.