ajaxKeys in scrollableDataTable doesn't work
joerg209 Nov 26, 2008 11:02 AMHi,
I get following error message, when I try to use the attribute 'ajaxKeys' of a scrollableDataTable:
javax.faces.convert.ConverterException: Value 3 is not supported by this converter at org.richfaces.convert.rowkey.ScrollableDataTableRowKeyConverter.getAsString(ScrollableDataTableRowKeyConverter.java:45) at org.ajax4jsf.component.UIDataAdaptor.getClientId(UIDataAdaptor.java:715) at javax.faces.component.UIComponent.getContainerClientId(UIComponent.java:311) at javax.faces.component.UIComponentBase.getClientId(UIComponentBase.java:241) at org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:964) at org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:943) at org.ajax4jsf.component.UIDataAdaptor.setRowKey(UIDataAdaptor.java:361) at org.ajax4jsf.component.UIDataAdaptor$ComponentVisitor.process(UIDataAdaptor.java:95) at org.ajax4jsf.component.UIDataAdaptor.encodeAjaxChild(UIDataAdaptor.java:488) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:104) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:67) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:115) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:67) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:115) at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:123) at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:677) at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:548) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:250) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:196) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140) at org.apache.myfaces.custom.ppr.PPRLifecycleWrapper.render(PPRLifecycleWrapper.java:84) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:155) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
On the page I'm using following code:
<rich:scrollableDataTable id="test" height="200px" rowKeyVar="rowKey" rows="0" var="item" value="#{test.values}" ajaxKeys="#{test.ajaxKeys}">
 <rich:column id="col1">
 <f:facet name="header">col1</f:facet>
 <h:outputText id="out1" value="#{item[0]}"/>
 </rich:column>
 <rich:column id="col2">
 <f:facet name="header">col2</f:facet>
 <h:inputText id="in1" value="#{item[1]}">
 <a4j:support event="onchange" reRender="out2"/>
 </h:inputText>
 </rich:column>
 <rich:column id="col3">
 <f:facet name="header">col3</f:facet>
 <h:outputText id="out2" value="#{item[2]}"/>
 </rich:column>
</rich:scrollableDataTable>
and in the associated bean (which is in the session scope):
public class MyTest {
 private ArrayList<ArrayList<String>> values;
 private Set<Integer> ajaxKeys;
 public MyTest ()
 {
 ajaxKeys = new HashSet<Integer>();
 ajaxKeys.add(3);
 }
 public Set<Integer> getAjaxKeys()
 {
 return ajaxKeys;
 }
 public ArrayList<ArrayList<String>> getValues()
 {
 if (values == null)
 {
 values = new ArrayList<ArrayList<String>>();
 for (int row = 0; row < 10; row++)
 {
 ArrayList<String> columns = new ArrayList<String>();
 values.add(columns);
 for (int col = 10; col < 20; col++)
 {
 columns.add("cell"+row+"/"+col);
 }
 }
 }
 return values;
 }
 ...
If I use the code with a rich:dataTable or a rich:extendedDataTable it shows the expected behaviour (the 3. column in the 4. row is rerenderd) but with rich:scrollableDataTable the error occurs.
Any ideas what I'm doing wrong?
Thx in advance
Joerg
 
    