Investigated UISeries and PanelTabSet to see how the previous code change might have affected f:ajax calls to within the panelTabSet. The visitTree() code in UISeries governs how f:ajax calls work within it. Basically, the recursion into the children could happen with and without iteration, that is the state saving did not use iteration and the regular phases did. But the recursion would not happen because this configuration of the PanelTabSet is with static tabPane children, and so there is no provided DataModel / value, so the code in UISeries that verifies that the DataModel row is available would fail and curtail the recursion. So first I attempted to allow it to recurse by detecting this specific scenario, and having PanelTabSet report that the data was available. But then, since it was in iteration, that affected the clientIds as reporting an additional index value in them. So I tried fixing the clientId generation to not have redundant indexing when in iteration. But that opened up a can of worms and touched on the ongoing ICE-7244 efforts, which is not in scope for this release. So, I backed out that attempt, and re-examined the visitTree changes, and saw that there had previously been some code for recursion when out of iteration, that was seemingly redundant, but looks to precisely be for this scenario. Re-enabling that code fixes this issue.
Subversion 26110
compat/components/src/main/java/com/icesoft/faces/component/panelseries/UISeries.java
Investigated UISeries and PanelTabSet to see how the previous code change might have affected f:ajax calls to within the panelTabSet. The visitTree() code in UISeries governs how f:ajax calls work within it. Basically, the recursion into the children could happen with and without iteration, that is the state saving did not use iteration and the regular phases did. But the recursion would not happen because this configuration of the PanelTabSet is with static tabPane children, and so there is no provided DataModel / value, so the code in UISeries that verifies that the DataModel row is available would fail and curtail the recursion. So first I attempted to allow it to recurse by detecting this specific scenario, and having PanelTabSet report that the data was available. But then, since it was in iteration, that affected the clientIds as reporting an additional index value in them. So I tried fixing the clientId generation to not have redundant indexing when in iteration. But that opened up a can of worms and touched on the ongoing
ICE-7244efforts, which is not in scope for this release. So, I backed out that attempt, and re-examined the visitTree changes, and saw that there had previously been some code for recursion when out of iteration, that was seemingly redundant, but looks to precisely be for this scenario. Re-enabling that code fixes this issue.Subversion 26110
compat/components/src/main/java/com/icesoft/faces/component/panelseries/UISeries.java