Author: dmorozov
Date: 2008-07-22 04:21:18 -0400 (Tue, 22 Jul 2008)
New Revision: 9725
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
Log:
Fix tbody rendering. in data table
Modified: trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java 2008-07-21
19:21:34 UTC (rev 9724)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java 2008-07-22
08:21:18 UTC (rev 9725)
@@ -191,24 +191,28 @@
}
@Override
- public void encodeAjaxChild(FacesContext context,
- String path,Set<String> ids,Set<String> renderedAreas) throws
IOException {
-
- if (this.isRendered()) {
- Renderer renderer = this.getRenderer(context);
- if (renderer instanceof AbstractTableRenderer) {
- AbstractTableRenderer r = (AbstractTableRenderer) renderer;
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- r.encodeTBodyAjax(context, this);
- ajaxContext.getAjaxRenderedAreas().add(this.getClientId(context) + ":tb");
- }
-
- AjaxChildrenRenderer childrenRenderer = getChildrenRenderer();
- String childsPath = path + getId() + NamingContainer.SEPARATOR_CHAR;
- for (UIComponent component : getFacets().values()) {
- childrenRenderer.encodeAjaxComponent(context, component, childsPath, ids,
renderedAreas);
- }
- }
+ public void encodeAjaxChild(FacesContext context, String path, Set<String> ids,
Set<String> renderedAreas) throws IOException {
+
+ boolean encodeChildren = true;
+ Renderer renderer = this.getRenderer(context);
+ if (renderer instanceof AbstractTableRenderer) {
+ AbstractTableRenderer r = (AbstractTableRenderer) renderer;
+ if (r.renderBodyOnly(context, this)) {
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ r.encodeTBodyAjax(context, this);
+ ajaxContext.getAjaxRenderedAreas().add(this.getClientId(context) +
":tb");
+ encodeChildren = false;
+ }
+ }
+
+ AjaxChildrenRenderer childrenRenderer = getChildrenRenderer();
+ if (encodeChildren) {
+ childrenRenderer.encodeAjaxChildren(context, this, path, ids,
renderedAreas);
+ } else {
+ String childsPath = path + getId() + NamingContainer.SEPARATOR_CHAR;
+ for (UIComponent component : getFacets().values()) {
+ childrenRenderer.encodeAjaxComponent(context, component, childsPath,
ids, renderedAreas);
+ }
+ }
}
-
}
\ No newline at end of file
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2008-07-21
19:21:34 UTC (rev 9724)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2008-07-22
08:21:18 UTC (rev 9725)
@@ -72,6 +72,11 @@
writer.endElement("tbody");
}
+ @Override
+ public void encodeChildren(FacesContext context, UIComponent component) throws
IOException {
+ encodeTBody(context, (UIDataTable) component);
+ }
+
/**
* Helper method for rendering data table tBody only.
* For HTML consistency it wrap tBody with extra fake "table" tag
@@ -87,6 +92,17 @@
}
/**
+ * Check whether to render tbody only by Ajax call
+ * @param context
+ * @param table
+ * @return data table tBody only should be rendered
+ */
+ public boolean renderBodyOnly(FacesContext context, UIDataTable table) {
+ Map<String, String> map =
context.getExternalContext().getRequestParameterMap();
+ return table.isRendered() &&
SORT_FILTER_PARAMETER.equals(map.get(table.getClientId(context)));
+ }
+
+ /**
* Encode all table structure - colgroups definitions, caption, header,
* footer
*
Show replies by date