Class HtmlTableRendererBase

java.lang.Object
jakarta.faces.render.Renderer
org.apache.myfaces.renderkit.html.base.HtmlRenderer
org.apache.myfaces.renderkit.html.base.HtmlTableRendererBase
Direct Known Subclasses:
HtmlTableRenderer

public class HtmlTableRendererBase extends HtmlRenderer
Common methods for renderers for components that subclass the standard Faces HtmlDataTable component.
  • Field Details

  • Constructor Details

    • HtmlTableRendererBase

      public HtmlTableRendererBase()
  • Method Details

    • getNewspaperColumns

      protected int getNewspaperColumns(UIComponent component)
      Parameters:
      component - dataTable
      Returns:
      number of layout columns
    • getNewspaperTableSpacer

      protected UIComponent getNewspaperTableSpacer(UIComponent component)
      Parameters:
      component - dataTable
      Returns:
      component to display between layout columns
    • hasNewspaperTableSpacer

      protected boolean hasNewspaperTableSpacer(UIComponent component)
      Parameters:
      component - dataTable
      Returns:
      whether dataTable has component to display between layout columns
    • isNewspaperHorizontalOrientation

      protected boolean isNewspaperHorizontalOrientation(UIComponent component)
      Parameters:
      component - dataTable
      Returns:
      whether dataTable has newspaper columns layed out horizontally
    • getRendersChildren

      public boolean getRendersChildren()
      Overrides:
      getRendersChildren in class Renderer
    • encodeBegin

      public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException
      Render the necessary bits that come before any actual rows in the table.
      Overrides:
      encodeBegin in class Renderer
      Throws:
      IOException
      See Also:
    • startTable

      protected void startTable(FacesContext facesContext, UIComponent uiComponent) throws IOException
      actually render the start of the table
      Throws:
      IOException
    • encodeChildren

      public void encodeChildren(FacesContext facesContext, UIComponent component) throws IOException
      Render the TBODY section of the html table. See also method encodeInnerHtml.
      Overrides:
      encodeChildren in class Renderer
      Throws:
      IOException
      See Also:
    • renderCaptionFacet

      protected void renderCaptionFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component) throws IOException
      Renders the caption facet.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the parent UIComponent containing the facets.
      Throws:
      IOException - if an exception occurs.
    • renderColgroupsFacet

      protected void renderColgroupsFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component) throws IOException
      Renders the colgroups facet.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the parent UIComponent containing the facets.
      Throws:
      IOException - if an exception occurs.
      Since:
      2.0
    • getStyles

      protected static HtmlTableRendererBase.Styles getStyles(UIData uiData)
      Gets styles for the specified component.
    • encodeInnerHtml

      public void encodeInnerHtml(FacesContext facesContext, UIComponent component) throws IOException
      Renders everything inside the TBODY tag by iterating over the row objects between offsets first and first+rows and applying the UIColumn components to those objects.

      This method is separated from the encodeChildren so that it can be overridden by subclasses. One class that uses this functionality is autoUpdateDataTable.

      Throws:
      IOException
    • encodeColumnChild

      protected void encodeColumnChild(FacesContext facesContext, ResponseWriter writer, UIData uiData, UIComponent component, HtmlTableRendererBase.Styles styles, int columnStyleIndex) throws IOException
      Throws:
      IOException
    • renderColumnBody

      protected void renderColumnBody(FacesContext facesContext, ResponseWriter writer, UIData uiData, UIComponent component, HtmlTableRendererBase.Styles styles, int columnStyleIndex) throws IOException
      Renders the body of a given UIColumn (everything but the header and footer facets). This emits a TD cell, whose contents are the result of calling encodeBegin, encodeChildren and encodeEnd methods on the component (or its associated renderer).
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiData - the UIData being rendered.
      component - the UIComponent to render.
      Throws:
      IOException - if an exception occurs.
    • renderRowStart

      protected void renderRowStart(FacesContext facesContext, ResponseWriter writer, UIData uiData, HtmlTableRendererBase.Styles styles, int rowStyleIndex) throws IOException
      Renders the start of a new row of body content.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiData - the UIData being rendered.
      Throws:
      IOException - if an exceptoin occurs.
    • renderRowStyle

      protected void renderRowStyle(FacesContext facesContext, ResponseWriter writer, UIData uiData, HtmlTableRendererBase.Styles styles, int rowStyleIndex) throws IOException
      Throws:
      IOException
    • renderRowEnd

      protected void renderRowEnd(FacesContext facesContext, ResponseWriter writer, UIData uiData) throws IOException
      Renders the end of a row of body content.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiData - the UIData being rendered.
      Throws:
      IOException - if an exceptoin occurs.
    • beforeTable

      protected void beforeTable(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary immediately before the TABLE start tag is output.
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • beforeBody

      protected void beforeBody(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary after TABLE start tag is output but before the TBODY start tag.

      This method generates the THEAD/TFOOT sections of a table if there are any header or footer facets defined on the table or on any child UIColumn component.

      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • beforeRow

      protected void beforeRow(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary immediately before each TR start tag is output.
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • afterRow

      protected void afterRow(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary immediately after each TR end tag is output.
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • beforeColumn

      protected void beforeColumn(FacesContext facesContext, UIData uiData, int columnIndex) throws IOException
      Perform any operations necessary immediately before each column child is rendered
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      columnIndex - the index of the currenly rendered column
      Throws:
      IOException
    • afterColumn

      protected void afterColumn(FacesContext facesContext, UIData uiData, int columnIndex) throws IOException
      Perform any operations necessary immediately after each column child is rendered
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      columnIndex - the index of the currenly rendered column
      Throws:
      IOException
    • getColumnCountForComponent

      protected int getColumnCountForComponent(FacesContext facesContext, UIData uiData, UIComponent child)
      Indicates the number of columns the component represents. By default each UIColumn instance is 1 column
      Parameters:
      facesContext -
      uiData -
      child -
      Returns:
    • beforeColumnHeaderOrFooter

      protected void beforeColumnHeaderOrFooter(FacesContext facesContext, UIData uiData, boolean header, int columnIndex) throws IOException
      Perform any operations necessary immediately before each column child's header or footer is rendered
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      header - true if the header of the column child is rendered
      columnIndex - the index of the currenly rendered column
      Throws:
      IOException
    • afterColumnHeaderOrFooter

      protected void afterColumnHeaderOrFooter(FacesContext facesContext, UIData uiData, boolean header, int columnIndex) throws IOException
      Perform any operations necessary immediately after each column child's header of footer is rendered
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      header - true if the header of the column child is rendered
      columnIndex - the index of the currenly rendered column
      Throws:
      IOException
    • inBodyStart

      protected void inBodyStart(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary in the TBODY start tag.
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • afterBody

      protected void afterBody(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary immediately after the TBODY end tag is output.
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • afterTable

      protected void afterTable(FacesContext facesContext, UIData uiData) throws IOException
      Perform any operations necessary immediately after the TABLE end tag is output.
      Parameters:
      facesContext - the FacesContext.
      uiData - the UIData being rendered.
      Throws:
      IOException
    • encodeEnd

      public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException
      Overrides:
      encodeEnd in class Renderer
      Throws:
      IOException
      See Also:
    • endTable

      protected void endTable(FacesContext facesContext, UIComponent uiComponent) throws IOException
      actually render the end of the table
      Throws:
      IOException
    • renderFacet

      protected void renderFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component, boolean header) throws IOException
      Renders either the header or the footer facets for the UIData component and all the child UIColumn components, as a THEAD or TFOOT element containing TR (row) elements.

      If there is a header or footer attached to the UIData then that is rendered as a TR element whose COLSPAN is the sum of all rendered columns in the table. This allows that header/footer to take up the entire width of the table.

      If any child column has a header or footer then a TR is rendered with a TH cell for each column child.

      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the UIData component
      header - whether this is the header facet (if not, then the footer facet).
      Throws:
      IOException - if an exception occurs.
    • determineHeaderFooterTag

      protected String determineHeaderFooterTag(FacesContext facesContext, UIComponent component, boolean header)
    • hasFacet

      protected boolean hasFacet(boolean header, UIComponent uiComponent)
      Parameters:
      header -
      uiComponent -
      Returns:
      boolean
    • determineChildColSpan

      protected int determineChildColSpan(UIComponent uiComponent)
      Calculate the number of columns the specified child component will span when rendered.

      Normally, this is a fairly simple calculation: a UIColumn component is rendered as one column, every other child type is not rendered (ie spans zero columns). However custom subclasses of this renderer may override this method to handle cases where a single component renders as multiple columns.

    • renderTableHeaderRow

      protected void renderTableHeaderRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, UIComponent headerFacet, String headerStyleClass, int colspan) throws IOException
      Renders the header row of the table being rendered.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the UIComponent for whom a table is being rendered.
      headerFacet - the facet for the header.
      headerStyleClass - the styleClass of the header.
      colspan - the number of columns the header should span. Typically, this is the number of columns in the table.
      Throws:
      IOException - if an exception occurs.
    • renderTableFooterRow

      protected void renderTableFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, UIComponent footerFacet, String footerStyleClass, int colspan) throws IOException
      Renders the footer row of the table being rendered.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the UIComponent for whom a table is being rendered.
      footerFacet - the facet for the footer.
      footerStyleClass - the styleClass of the footer.
      colspan - the number of columns the header should span. Typically, this is the number of columns in the table.
      Throws:
      IOException - if an exception occurs.
    • renderColumnHeaderRow

      protected void renderColumnHeaderRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, String headerStyleClass) throws IOException
      Renders the header row for the columns, which is a separate row from the header row for the UIData header facet.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the UIData component for whom a table is being rendered.
      headerStyleClass - the styleClass of the header
      Throws:
      IOException - if an exception occurs.
    • renderColumnFooterRow

      protected void renderColumnFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, String footerStyleClass) throws IOException
      Renders the footer row for the columns, which is a separate row from the footer row for the UIData footer facet.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      component - the UIComponent for whom a table is being rendered.
      footerStyleClass - the styleClass of the footerStyleClass
      Throws:
      IOException - if an exception occurs.
    • renderTableHeaderOrFooterRow

      protected void renderTableHeaderOrFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, UIComponent facet, String styleClass, String colElementName, int colspan, boolean isHeader) throws IOException
      Throws:
      IOException
    • renderSpacerCell

      protected void renderSpacerCell(FacesContext facesContext, ResponseWriter writer, UIComponent component) throws IOException
      Renders a spacer between adjacent newspaper columns.
      Throws:
      IOException
    • renderColumnChildHeaderOrFooterRow

      protected void renderColumnChildHeaderOrFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent uiComponent, String styleClass, boolean isHeader) throws IOException
      Throws:
      IOException
    • renderColumnHeaderCell

      protected void renderColumnHeaderCell(FacesContext facesContext, ResponseWriter writer, UIColumn uiColumn, String headerStyleClass, int colspan) throws IOException
      Renders the header facet for the given UIColumn.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiColumn - the UIColumn.
      headerStyleClass - the styleClass of the header facet.
      colspan - the colspan for the tableData element in which the header facet will be wrapped.
      Throws:
      IOException
    • renderColumnHeaderCell

      protected void renderColumnHeaderCell(FacesContext facesContext, ResponseWriter writer, UIComponent uiComponent, UIComponent facet, String headerStyleClass, int colspan) throws IOException
      Renders a TH cell within a TR within a THEAD section. If the specified UIColumn object does have a header facet, then that facet is rendered within the cell, otherwise the cell is left blank (though any specified style class is still applied to empty cells).
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiComponent - the UIComponent to render the facet for.
      facet - the UIComponent to render as facet.
      headerStyleClass - the styleClass of the header facet.
      colspan - the colspan for the tableData element in which the header facet will be wrapped.
      Throws:
      IOException
    • determineHeaderCellTag

      protected String determineHeaderCellTag(FacesContext facesContext, UIComponent uiComponent)
    • renderColumnFooterCell

      protected void renderColumnFooterCell(FacesContext facesContext, ResponseWriter writer, UIColumn uiColumn, String footerStyleClass, int colspan) throws IOException
      Renders the footer facet for the given UIColumn.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiColumn - the UIComponent.
      footerStyleClass - the styleClass of the footer facet.
      colspan - the colspan for the tableData element in which the footer facet will be wrapped.
      Throws:
      IOException
    • renderColumnFooterCell

      protected void renderColumnFooterCell(FacesContext facesContext, ResponseWriter writer, UIComponent uiComponent, UIComponent facet, String footerStyleClass, int colspan) throws IOException
      Renders the footer facet for the given UIColumn.
      Parameters:
      facesContext - the FacesContext.
      writer - the ResponseWriter.
      uiComponent - the UIComponent to render the facet for.
      facet - the UIComponent to render as facet.
      footerStyleClass - the styleClass of the footer facet.
      colspan - the colspan for the tableData element in which the footer facet will be wrapped.
      Throws:
      IOException
    • getHeaderClass

      protected static String getHeaderClass(UIComponent component)
      Gets the headerClass attribute of the given UIComponent.
      Parameters:
      component - the UIComponent.
      Returns:
      the headerClass attribute of the given UIComponent.
    • getFooterClass

      protected static String getFooterClass(UIComponent component)
      Gets the footerClass attribute of the given UIComponent.
      Parameters:
      component - the UIComponent.
      Returns:
      the footerClass attribute of the given UIComponent.
    • decode

      public void decode(FacesContext context, UIComponent component)
      Overrides:
      decode in class Renderer