public void encodeRow(ResponseWriter writer, FacesContext facesContext, RowHolderBase holder) throws IOException { RowHolder rowHolder = (RowHolder) holder; Row row = rowHolder.getRow(); putRowStylesIntoContext(facesContext, rowHolder); rowHolder.setRowStart(true); Iterator<UIComponent> components = row.columns(); if (rowHolder.isUpdatePartial()) { partialStart( facesContext, ((AbstractCollapsibleSubTable) row).getRelativeClientId(facesContext) + ":b"); } int columnNumber = 0; while (components.hasNext()) { UIComponent component = components.next(); if (component.isRendered()) { if (component instanceof UIColumn) { component.getAttributes().put(COLUMN_CLASS, getColumnClass(rowHolder, columnNumber)); encodeColumn(facesContext, writer, (UIColumn) component, rowHolder); columnNumber++; } else if (component instanceof AbstractCollapsibleSubTable) { if (component.isRendered()) { encodeRowEnd(writer); } component.encodeAll(facesContext); rowHolder.setRowStart(true); } } } encodeRowEnd(writer); if (rowHolder.isUpdatePartial()) { partialEnd(facesContext); } }