dev@javaserverfaces.java.net

UIData.encodeBegin row-state clearing

From: Mike Kienenberger <mkienenb_at_gmail.com>
Date: Mon, 10 Jul 2006 11:25:50 -0400

The javadocs of UIData.encodeBegin state:

=========
In addition to the default behavior, ensure that any saved per-row
state for our child input components is discarded unless it is needed
to rerender the current page with errors.
=========

It seems to me that the "with errors" part should be dropped.

Consider the case of a page with a UICommand where immediate="true"
and a UIData containing UIInput components.

In this case, the UIInputs will lose any submitted values when the
UICommand is triggered. This is the behavior I'm seeing with the
MyFaces implementation, and I don't see a way around it in the spec.

Can we change the spec to preserve the state whenever the UIInputs
have a submitted value or a local value still present? This seems
more useful than checking for an error message.

Taking a look at the latest JSF 1.2 RI source, I also see that the
state is also saved if the UIData is inside another UIData. The spec
docs should reflect this as well.

I'm going to try to be on ##jsf today if anyone would rather talk
about it there.