Hm, I could, but now I think that my workaround is wrong (indeed it works, but problem was not with overriding expanded property by iterationState). According to semantics of iterationState it is OK to get (save) and set (restore) properties of component. Problem is that state is saved for one set of components, but restored for other set.
org.richfaces.component.UIDataAdaptor#setRowKey, for rich:tree case the following is happening:
1. saveChildState. As current row is null - dataChildren() method returns children of default tree node facet (see org.richfaces.component.AbstractTree#DEFAULT_TREE_NODE_FACET_NAME). State is saved for that components.
2. this.rowKey = rowKey; ....
3. restoreChildState. Now current row is not null - dataChildren() method returns children of tree node of current row. And state of default facet children now is applied to these components.
Hm, I could, but now I think that my workaround is wrong (indeed it works, but problem was not with overriding expanded property by iterationState). According to semantics of iterationState it is OK to get (save) and set (restore) properties of component. Problem is that state is saved for one set of components, but restored for other set.
org.richfaces.component.UIDataAdaptor#setRowKey, for rich:tree case the following is happening:
1. saveChildState. As current row is null - dataChildren() method returns children of default tree node facet (see org.richfaces.component.AbstractTree#DEFAULT_TREE_NODE_FACET_NAME). State is saved for that components.
2. this.rowKey = rowKey; ....
3. restoreChildState. Now current row is not null - dataChildren() method returns children of tree node of current row. And state of default facet children now is applied to these components.