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