Author: konstantin.mishin
Date: 2008-03-03 14:29:43 -0500 (Mon, 03 Mar 2008)
New Revision: 6507
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
trunk/ui/dataTable/src/main/templates/org/richfaces/htmlDataTable.jspx
Log:
RF-1742
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2008-03-03
19:28:47 UTC (rev 6506)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2008-03-03
19:29:43 UTC (rev 6507)
@@ -26,6 +26,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.faces.FacesException;
import javax.faces.component.UIColumn;
@@ -438,8 +439,9 @@
@Override
protected void doDecode(FacesContext context, UIComponent component) {
Map<String, String> map = context.getExternalContext().getRequestParameterMap();
- if (SORT_FILTER_PARAMETER.equals(map.get(component.getClientId(context)))) {
- String clientId = map.get(SORT_FILTER_PARAMETER);
+ String clientId = component.getClientId(context);
+ if (SORT_FILTER_PARAMETER.equals(map.get(clientId))) {
+ String sortColumnId = map.get(SORT_FILTER_PARAMETER);
List<UIComponent> list = component.getChildren();
UIDataTable table = (UIDataTable) component;
boolean isSingleSortMode = !"multi".equals(table.getSortMode());
@@ -449,8 +451,8 @@
if (child instanceof org.richfaces.component.UIColumn) {
org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn) child;
child.setId(child.getId());
- if (clientId != null) {
- if (clientId.equals(child.getClientId(context))) {
+ if (sortColumnId != null) {
+ if (sortColumnId.equals(child.getClientId(context))) {
String id = child.getId();
Collection<Object> sortPriority = table.getSortPriority();
if (isSingleSortMode) {
@@ -477,9 +479,20 @@
}
AjaxContext.getCurrentInstance()
.addComponentToAjaxRender(component);
+ AjaxContext.getCurrentInstance().addRenderedArea(clientId+ ":tb");
}
}
+ @Override
+ public void encodeEnd(FacesContext context, UIComponent component)
+ throws IOException {
+ super.encodeEnd(context, component);
+ String clientId = component.getClientId(context);
+ Set ajaxRenderedAreas = AjaxContext.getCurrentInstance().getAjaxRenderedAreas();
+ if(ajaxRenderedAreas.contains(clientId+ ":tb")) {
+ ajaxRenderedAreas.remove(clientId);
+ }
+ }
protected void addInplaceInput(FacesContext context, UIComponent column,
String buffer) throws IOException {
UIInput filterValueInput = (UIInput) column
Modified: trunk/ui/dataTable/src/main/templates/org/richfaces/htmlDataTable.jspx
===================================================================
--- trunk/ui/dataTable/src/main/templates/org/richfaces/htmlDataTable.jspx 2008-03-03
19:28:47 UTC (rev 6506)
+++ trunk/ui/dataTable/src/main/templates/org/richfaces/htmlDataTable.jspx 2008-03-03
19:29:43 UTC (rev 6507)
@@ -27,7 +27,7 @@
<f:parameter value="value,name,type,id,class,rows,style" />
</f:call>
<f:call name="encodeTableStructure"/>
- <tbody>
+ <tbody id="#{clientId}:tb">
<vcp:body>
<f:call name="encodeRows"/>
</vcp:body>