Children of iterating components receive multiple PostRestoreStateEvents
------------------------------------------------------------------------
Key: MYFACES-3037
URL: https://issues.apache.org/jira/browse/MYFACES-3037
Project: MyFaces Core
Issue Type: Bug
Components: General
Affects Versions: 2.0.3
Reporter: Andy Schwartz
We currently use a tree visit to deliver PostRestoreStateEvents. By default
tree visits will cause iterating components (such as UIData/UIRepeat) to
iterate over all visible rows in the model. This results in children being
visited once per iteration - and thus PostRestoreStateEvents re-delivered for
each row.
An interesting side effect of this is that component binding setters will be
evaluated multiple times. For example, in a case like this:
<h:dataTable value="#{someModel}" var="row">
<h:column>
<h:ouputText binding="bean.foo"/>
</h:column>
</h:dataTable>
The binding setter (eg. setFoo()) is called multiple times (once per row) in
2.0. In 1.2 this was only called one time.
Note that a solution for the following issue:
MYFACES-3036 Support SKIP_ITERATION FacesContext property
Would make fixing this issue simple. The tree visit that we use for
PostRestoreStateEvent delivery would simply specify the SKIP_ITERATION hint.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira