Author: abelevich
Date: 2010-01-05 07:08:08 -0500 (Tue, 05 Jan 2010)
New Revision: 16238
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
Log:
find UIDataTable parent
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2010-01-05
12:06:08 UTC (rev 16237)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2010-01-05
12:08:08 UTC (rev 16238)
@@ -21,8 +21,6 @@
package org.richfaces.component;
-import java.io.IOException;
-
import javax.el.ELContext;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
@@ -141,17 +139,22 @@
public DataTableState getParentState() {
DataTableState dataTableState = null;
- //TODO nick - walk by parents until UIDataTable is found or no parent exists
- UIComponent component = getParent();
- if (component instanceof UIDataTable) {
- UIDataTable dataTable = (UIDataTable) component;
- DataComponentState state = dataTable.getComponentState();
+ UIComponent parent = getParent();
+ while(parent != null && !(parent instanceof UIDataTable)) {
+ parent = parent.getParent();
+ }
+
+ if(parent == null) {
+ throw new AbortProcessingException("UISubTable should have a UIDataTable
parent");
+ }
+
+ UIDataTable dataTable = (UIDataTable) parent;
+ DataComponentState state = dataTable.getComponentState();
- if (state instanceof DataTableState) {
- dataTableState = (DataTableState) state;
- }
+ if (state instanceof DataTableState) {
+ dataTableState = (DataTableState) state;
}
-
+
return dataTableState;
}
@@ -162,6 +165,7 @@
if (parentState != null) {
//TODO nick - use getClientId(FacesContext)
+ //what's wrong with getClientId()???
state = parentState.getChildState(getClientId());
}
@@ -218,14 +222,15 @@
}
MethodExpression expression = getToggleListener();
+ FacesContext context = getFacesContext();
+
if (expression != null) {
- expression.invoke(getFacesContext().getELContext(), new Object[] {
toggleEvent });
+ expression.invoke(context.getELContext(), new Object[] { toggleEvent });
}
UIToggleControl toggle = (UIToggleControl)toggleEvent.getSource();
// toggle.addExecuteId((String)getAttributes().get("clientId"));
- //TODO nick - replace with getClientId(FacesContext)
- toggle.addRenderId((String)getAttributes().get("clientId"));
+ toggle.addRenderId(getClientId(context));
}
}
Show replies by date