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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
HtmlTableRendererBase.Styles
Class manages the styles from String lists.
-
Field Summary
Fields Modifier and Type Field Description protected static String
CAPTION_FACET_NAME
protected static String
FOOTER_FACET_NAME
protected static String
HEADER_FACET_NAME
-
Fields inherited from class jakarta.faces.render.Renderer
PASSTHROUGH_RENDERER_LOCALNAME_KEY
-
-
Constructor Summary
Constructors Constructor Description HtmlTableRendererBase()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
afterBody(FacesContext facesContext, UIData uiData)
Perform any operations necessary immediately after the TBODY end tag is output.protected void
afterColumn(FacesContext facesContext, UIData uiData, int columnIndex)
Perform any operations necessary immediately after each column child is renderedprotected void
afterColumnHeaderOrFooter(FacesContext facesContext, UIData uiData, boolean header, int columnIndex)
Perform any operations necessary immediately after each column child's header of footer is renderedprotected void
afterRow(FacesContext facesContext, UIData uiData)
Perform any operations necessary immediately after each TR end tag is output.protected void
afterTable(FacesContext facesContext, UIData uiData)
Perform any operations necessary immediately after the TABLE end tag is output.protected void
beforeBody(FacesContext facesContext, UIData uiData)
Perform any operations necessary after TABLE start tag is output but before the TBODY start tag.protected void
beforeColumn(FacesContext facesContext, UIData uiData, int columnIndex)
Perform any operations necessary immediately before each column child is renderedprotected void
beforeColumnHeaderOrFooter(FacesContext facesContext, UIData uiData, boolean header, int columnIndex)
Perform any operations necessary immediately before each column child's header or footer is renderedprotected void
beforeRow(FacesContext facesContext, UIData uiData)
Perform any operations necessary immediately before each TR start tag is output.protected void
beforeTable(FacesContext facesContext, UIData uiData)
Perform any operations necessary immediately before the TABLE start tag is output.void
decode(FacesContext context, UIComponent component)
protected int
determineChildColSpan(UIComponent uiComponent)
Calculate the number of columns the specified child component will span when rendered.protected String
determineHeaderCellTag(FacesContext facesContext, UIComponent uiComponent)
protected String
determineHeaderFooterTag(FacesContext facesContext, UIComponent component, boolean header)
void
encodeBegin(FacesContext facesContext, UIComponent uiComponent)
Render the necessary bits that come before any actual rows in the table.void
encodeChildren(FacesContext facesContext, UIComponent component)
Render the TBODY section of the html table.protected void
encodeColumnChild(FacesContext facesContext, ResponseWriter writer, UIData uiData, UIComponent component, HtmlTableRendererBase.Styles styles, int columnStyleIndex)
void
encodeEnd(FacesContext facesContext, UIComponent uiComponent)
void
encodeInnerHtml(FacesContext facesContext, UIComponent component)
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.protected void
endTable(FacesContext facesContext, UIComponent uiComponent)
actually render the end of the tableprotected int
getColumnCountForComponent(FacesContext facesContext, UIData uiData, UIComponent child)
Indicates the number of columns the component represents.protected static String
getFooterClass(UIComponent component)
Gets the footerClass attribute of the givenUIComponent
.protected static String
getHeaderClass(UIComponent component)
Gets the headerClass attribute of the givenUIComponent
.protected int
getNewspaperColumns(UIComponent component)
protected UIComponent
getNewspaperTableSpacer(UIComponent component)
boolean
getRendersChildren()
protected static HtmlTableRendererBase.Styles
getStyles(UIData uiData)
Gets styles for the specified component.protected boolean
hasFacet(boolean header, UIComponent uiComponent)
protected boolean
hasNewspaperTableSpacer(UIComponent component)
protected void
inBodyStart(FacesContext facesContext, UIData uiData)
Perform any operations necessary in the TBODY start tag.protected boolean
isNewspaperHorizontalOrientation(UIComponent component)
protected void
renderCaptionFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component)
Renders the caption facet.protected void
renderColgroupsFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component)
Renders the colgroups facet.protected void
renderColumnBody(FacesContext facesContext, ResponseWriter writer, UIData uiData, UIComponent component, HtmlTableRendererBase.Styles styles, int columnStyleIndex)
Renders the body of a givenUIColumn
(everything but the header and footer facets).protected void
renderColumnChildHeaderOrFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent uiComponent, String styleClass, boolean isHeader)
protected void
renderColumnFooterCell(FacesContext facesContext, ResponseWriter writer, UIColumn uiColumn, String footerStyleClass, int colspan)
Renders the footer facet for the givenUIColumn
.protected void
renderColumnFooterCell(FacesContext facesContext, ResponseWriter writer, UIComponent uiComponent, UIComponent facet, String footerStyleClass, int colspan)
Renders the footer facet for the givenUIColumn
.protected void
renderColumnFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, String footerStyleClass)
Renders the footer row for the columns, which is a separate row from the footer row for theUIData
footer facet.protected void
renderColumnHeaderCell(FacesContext facesContext, ResponseWriter writer, UIColumn uiColumn, String headerStyleClass, int colspan)
Renders the header facet for the givenUIColumn
.protected void
renderColumnHeaderCell(FacesContext facesContext, ResponseWriter writer, UIComponent uiComponent, UIComponent facet, String headerStyleClass, int colspan)
Renders a TH cell within a TR within a THEAD section.protected void
renderColumnHeaderRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, String headerStyleClass)
Renders the header row for the columns, which is a separate row from the header row for theUIData
header facet.protected void
renderFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component, boolean header)
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.protected void
renderRowEnd(FacesContext facesContext, ResponseWriter writer, UIData uiData)
Renders the end of a row of body content.protected void
renderRowStart(FacesContext facesContext, ResponseWriter writer, UIData uiData, HtmlTableRendererBase.Styles styles, int rowStyleIndex)
Renders the start of a new row of body content.protected void
renderRowStyle(FacesContext facesContext, ResponseWriter writer, UIData uiData, HtmlTableRendererBase.Styles styles, int rowStyleIndex)
protected void
renderSpacerCell(FacesContext facesContext, ResponseWriter writer, UIComponent component)
Renders a spacer between adjacent newspaper columns.protected void
renderTableFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, UIComponent footerFacet, String footerStyleClass, int colspan)
Renders the footer row of the table being rendered.protected void
renderTableHeaderOrFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, UIComponent facet, String styleClass, String colElementName, int colspan, boolean isHeader)
protected void
renderTableHeaderRow(FacesContext facesContext, ResponseWriter writer, UIComponent component, UIComponent headerFacet, String headerStyleClass, int colspan)
Renders the header row of the table being rendered.protected void
startTable(FacesContext facesContext, UIComponent uiComponent)
actually render the start of the table-
Methods inherited from class org.apache.myfaces.renderkit.html.base.HtmlRenderer
getActionUrl, getChildCount, getChildren, getClientId, isCommonEventsOptimizationEnabled, isCommonPropertiesOptimizationEnabled, renderId, shouldRenderId
-
Methods inherited from class jakarta.faces.render.Renderer
convertClientId, getConvertedValue
-
-
-
-
Field Detail
-
HEADER_FACET_NAME
protected static final String HEADER_FACET_NAME
- See Also:
- Constant Field Values
-
FOOTER_FACET_NAME
protected static final String FOOTER_FACET_NAME
- See Also:
- Constant Field Values
-
CAPTION_FACET_NAME
protected static final String CAPTION_FACET_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
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 classRenderer
-
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 classRenderer
- Throws:
IOException
- See Also:
Renderer.encodeBegin(FacesContext, UIComponent)
-
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 classRenderer
- Throws:
IOException
- See Also:
Renderer.encodeChildren(FacesContext, UIComponent)
-
renderCaptionFacet
protected void renderCaptionFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component) throws IOException
Renders the caption facet.- Parameters:
facesContext
- theFacesContext
.writer
- theResponseWriter
.component
- the parentUIComponent
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
- theFacesContext
.writer
- theResponseWriter
.component
- the parentUIComponent
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 givenUIColumn
(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
- theFacesContext
.writer
- theResponseWriter
.uiData
- theUIData
being rendered.component
- theUIComponent
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
- theFacesContext
.writer
- theResponseWriter
.uiData
- theUIData
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
- theFacesContext
.writer
- theResponseWriter
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
being rendered.header
- true if the header of the column child is renderedcolumnIndex
- 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
- theFacesContext
.uiData
- theUIData
being rendered.header
- true if the header of the column child is renderedcolumnIndex
- 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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
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
- theFacesContext
.uiData
- theUIData
being rendered.- Throws:
IOException
-
encodeEnd
public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException
- Overrides:
encodeEnd
in classRenderer
- Throws:
IOException
- See Also:
Renderer.encodeEnd(FacesContext, UIComponent)
-
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
- theFacesContext
.writer
- theResponseWriter
.component
- the UIData componentheader
- 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
- theFacesContext
.writer
- theResponseWriter
.component
- theUIComponent
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
- theFacesContext
.writer
- theResponseWriter
.component
- theUIComponent
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 theUIData
header facet.- Parameters:
facesContext
- theFacesContext
.writer
- theResponseWriter
.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 theUIData
footer facet.- Parameters:
facesContext
- theFacesContext
.writer
- theResponseWriter
.component
- theUIComponent
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 givenUIColumn
.- Parameters:
facesContext
- theFacesContext
.writer
- theResponseWriter
.uiColumn
- theUIColumn
.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
- theFacesContext
.writer
- theResponseWriter
.uiComponent
- theUIComponent
to render the facet for.facet
- theUIComponent
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 givenUIColumn
.- Parameters:
facesContext
- theFacesContext
.writer
- theResponseWriter
.uiColumn
- theUIComponent
.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 givenUIColumn
.- Parameters:
facesContext
- theFacesContext
.writer
- theResponseWriter
.uiComponent
- theUIComponent
to render the facet for.facet
- theUIComponent
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 givenUIComponent
.- Parameters:
component
- theUIComponent
.- Returns:
- the headerClass attribute of the given
UIComponent
.
-
getFooterClass
protected static String getFooterClass(UIComponent component)
Gets the footerClass attribute of the givenUIComponent
.- Parameters:
component
- theUIComponent
.- Returns:
- the footerClass attribute of the given
UIComponent
.
-
decode
public void decode(FacesContext context, UIComponent component)
-
-