DataGridRenderer extends AbstractRowsRenderer implements MetaComponentRenderer { public void encodeCaption(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid) throws IOException { UIComponent captionFacet = dataGrid.getCaption(); encodeFacet(writer, facesContext, captionFacet, CAPTION, dataGrid, null); }  @Override void encodeRow(ResponseWriter writer, FacesContext facesContext, RowHolderBase rowHolder); void encodeHeader(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid, boolean partial); void encodeFooter(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid, boolean partial); void encodeCaption(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid); void encodeNoData(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid); void encodeFacet(ResponseWriter writer, FacesContext facesContext, UIComponent facet, EncodeStrategy strategy,
        AbstractDataGrid dataGrid, Object[] params); void encodeTBody(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid, boolean partial); @Override RowHolderBase createRowHolder(FacesContext context, UIComponent component, Object[] options); void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId); void decodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId); DataVisitResult process(FacesContext facesContext, Object rowKey, Object argument); @Override void encodeFakeRow(FacesContext facesContext, RowHolderBase rowHolder);  }
@Test public final void testEncodeCaption() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGrid = page.getElementById("dataGrid"); assertEquals("captionFacet", ((HtmlElement) dataGrid.getFirstByXPath("caption[@class='rf-dg-cap'] .getTextContent()); }