@Override
    public String getContainerClientId(FacesContext context) {
        if (isPrependId() || isRepeating()) {
            String clientId = super.getContainerClientId(context);

            int index = getIndex();
            if (index == -1) {
                return clientId;
            }

            StringBuilder sb = SharedStringBuilder.get(context, SB_ID, clientId.length() + 4);
            return sb.append(clientId).append(UINamingContainer.getSeparatorChar(context)).append(index).toString();
        }
        else {
            UIComponent parent = getParent();
            while (parent != null) {
                if (parent instanceof NamingContainer) {
                    return parent.getContainerClientId(context);
                }
                parent = parent.getParent();
            }

            return null;
        }
    }
Handle case where this table is nested inside another table. See method getDataModel for more details.
<p>
Key: parentClientId (aka rowId when nested within a parent table) Value: DataModel
primefaces/src/main/java/org/primefaces/component/api/UITabPanel.java