Problem appears when the list of actions contains the same actions (and the new selection adds more actions to the list).
Problem is independent from the layout/widget system, but linked to the c:forEach tag behaviour in ajax.
Components representing "old" actions are found in the JSF tree by facelets, and are applied the new iteration variable value when they change. But the id on components is not computed again, hence the duplicate id.
Detailed use case:
- page is rendered (not in ajax), displaying 2 actions, action_A and action_B.
- page is re-rendered in ajax, displaying now 4 actions, in this order: action_C, action_D, then again action_A and action_B.
Old JSF component representing action_A is reused for new action_C, but its id is kept as is so it will be using "action_A_id".
Same for action_D, reusing the old component for action_B, so its id is "action_B_id".
A new component is created for action_A, as it was not in the previous tree (there was no third item), and it will be using "action_A_id" => duplicate id.
Old actions are found because the detection system relies on the facelets tagConfigId, that is not supposed to change depending on the c:forEach items variable value.