dynamic a4j:support Problem
fhagen Aug 30, 2007 9:27 AMHi,
in my App i'm trying to build up a dynamic dataTable in which the inputfields should get some ajax4jsf support:
<rich:dataTable id="testTable" binding="#{positionBean.dataTable}" value="#{positionBean.positions}" var="pos" ajaxKeys="#{positionBean.rowSet}"/>The whole binding without ajaxsupport works fine and everything is displayed.
But if i want to add the support i got an exception.
Here ist the "getDataTable" method:
public HtmlDataTable getDataTable() {
HtmlColumn col1 = new HtmlColumn();
UIOutput desc = new UIOutput();
String test = "testdaten";
Application app = FacesContext.getCurrentInstance().getApplication();
ValueBinding vb= app.createValueBinding("#{pos.description}");
desc.setValueBinding("value", vb);
desc.setRendererType("javax.faces.Text");
col1.getChildren().add(desc);
dataTable.getChildren().add(col1);
//2 columns
for(int i=0;i<2;i++)
{
HtmlAjaxSupport supportClick = new HtmlAjaxSupport();
HtmlAjaxSupport supportChange = new HtmlAjaxSupport();
HtmlColumn col = new HtmlColumn();
UIInput input = new UIInput();
ValueBinding bind = app.createValueBinding("#{pos.output["+ i + "]}");
ValueBinding bindStyle = app.createValueBinding("#{pos.style["+ i + "]}");
MethodBinding onClick = app.createMethodBinding("#{pos.showFormula}",null);
MethodBinding onChange = app.createMethodBinding("#{positionBean.calculateAction}",null);
input.setId("pos" + i);
input.setValueBinding("value", bind);
input.setValueBinding("styleClass", bindStyle);
input.getChildren().add(supportClick);
//input.setRendererType("javax.faces.Text");
supportChange.setEvent("onclick");
supportChange.setReRender("pos" + i);
supportChange.setFocus("pos" +i);
supportChange.setAction(onClick);
supportChange.setParent(input);
col.getChildren().add(input);
dataTable.getChildren().add(col);
}
return dataTable;
}
If i remove the "supportChange.setParent(input);" line, the table is displayed but without ajax support.
Here ist the exception i receive:
30.08.2007 15:17:04 com.sun.facelets.FaceletViewHandler handleRenderException SCHWERWIEGEND: Error Rendering View[/pages/example.jsp] javax.faces.el.EvaluationException: AjaxUpdate component not found for id: :testTable:null at org.ajax4jsf.framework.ajax.EventValueBinding.getComponent(EventValueBinding.java:108) at org.ajax4jsf.framework.ajax.EventValueBinding.getValue(EventValueBinding.java:91) at javax.faces.component._ComponentAttributesMap.get(_ComponentAttributesMap.java:249) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderHTMLAttribute(HtmlRendererUtils.java:535) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderHTMLAttributes(HtmlRendererUtils.java:549) at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderInput(HtmlTextRendererBase.java:146) at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:53) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:286) at org.ajax4jsf.framework.renderer.RendererBase.renderChildren(RendererBase.java:262) at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:284) at org.richfaces.renderkit.AbstractRowsRenderer.encodeCellChildren(AbstractRowsRenderer.java:282) at org.richfaces.renderkit.AbstractTableRenderer.encodeOneRow(AbstractTableRenderer.java:216) at org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:86) at org.ajax4jsf.ajax.repeat.SequenceDataModel.walk(SequenceDataModel.java:101) at org.ajax4jsf.ajax.repeat.UIDataAdaptor.walk(UIDataAdaptor.java:917) [...] 15:17:05,639 ERROR [Faces Servlet]:253 - Servlet.service() for servlet Faces Servlet threw exception javax.faces.el.EvaluationException: AjaxUpdate component not found for id: :testTable:null at org.ajax4jsf.framework.ajax.EventValueBinding.getComponent(EventValueBinding.java:108) at org.ajax4jsf.framework.ajax.EventValueBinding.getValue(EventValueBinding.java:91) at javax.faces.component._ComponentAttributesMap.get(_ComponentAttributesMap.java:249) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderHTMLAttribute(HtmlRendererUtils.java:535) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderHTMLAttributes(HtmlRendererUtils.java:549) at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderInput(HtmlTextRendererBase.java:146) at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:53) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:286) at org.ajax4jsf.framework.renderer.RendererBase.renderChildren(RendererBase.java:262) at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:284) at org.richfaces.renderkit.AbstractRowsRenderer.encodeCellChildren(AbstractRowsRenderer.java:282) at org.richfaces.renderkit.AbstractTableRenderer.encodeOneRow(AbstractTableRenderer.java:216) at org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:86) [...]
How to bind the support correctly?