UIData.encodeBegin row-state clearing

From: Mike Kienenberger <>
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.