A typical GUI use case is to be able to edit a table with a modal dialog (one row at a time). This is easily done with RichFaces and Seam.
In the template we define a datatable and the modal dialogues that are displayed when we right-click on the row.
Due to a limitation in JSF, UIInputs that do not fail validation are sticky i.e. they retain their values through multiple requests. This behavior makes sense on many occasions as most of the time users will just correct the errors and resubmit the form, but on the odd occasion is not really desirable such as when using a form to display multiple objects selected by Ajax requests like in this case since if we leave some empty values in the form and select another row the new values selected will not be shown in the panel. See http://wiki.apache.org/myfaces/ClearInputComponents
That's why we have a cancel() method that clears submitted values if we close the dialog while we still have validation errors.