Continuing to manually wrap them is probably the best solution. Passing rendered to the component itself would either result in the same panelGroup approach (to be able to get all the sub components of dualList) or have 5+ rendered attributes on each individual component. Neither is optimal, so we'll leave it up to the users.