[ 
https://jira.jboss.org/jira/browse/RF-4517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12430750#action_12430750
 ] 

Matthieu Guyonnet-Duluc commented on RF-4517:
---------------------------------------------

may be it's not the decode of the value which has a bug but the "encode" method.

In ScrollableDataTableBaseRenderer , the method renderHiddenScrollInput write 
the parameter like that :

getUtils().writeAttribute(writer, "value", grid.getScrollPos());

grid = UIScrollableDataTable

and the ScrollPos is a simple string value. but in the checkRange method it 's 
overrided :

private void checkRange() {
                int rows;
                if(reqRowsCount == -1 ){
                        rows = getRows();
                } else {
                        rows = reqRowsCount;
                }
                if (getRowCount() < getFirst() + rows) {
                        setFirst(0);
                        setScrollPos("0,0," + rows); <= here we've only 3 
attributes
                }
        }


> ArrayIndexOutOfBoundsException for scrollableDataTable in 3.2.2 GA and 3.3.3 
> snapshot
> -------------------------------------------------------------------------------------
>
>                 Key: RF-4517
>                 URL: https://jira.jboss.org/jira/browse/RF-4517
>             Project: RichFaces
>          Issue Type: Bug
>    Affects Versions: 3.2.2
>         Environment: Browser independent
>            Reporter: andreas_back
>
> Subversion shows that konstantin.mishin introduced the code 
>       String[] si = options.split(",");
>       grid.setFirst(Integer.parseInt(si[1]));
>       component.getAttributes().put(ScrollableDataTableUtils.CLIENT_ROW_KEY, 
> Integer.parseInt(si[3]));
>       
> into the class ScrollableDataTableBaseRenderer at 02 September 2008 for the 
> bugfix of RF-4367.
> After changing to 3.2.2 GA we see the following exception for 
> scrollableDataTables.
> The exception occurs if the table contains less rows than the rows parameter 
> in the 
> definition of the rich:scrollableDataTable:
> java.lang.ArrayIndexOutOfBoundsException: 3
>       
> org.richfaces.renderkit.html.ScrollableDataTableBaseRenderer.doDecode(ScrollableDataTableBaseRenderer.java:651)
>       org.ajax4jsf.renderkit.RendererBase.decode(RendererBase.java:76)
>       javax.faces.component.UIComponentBase.decode(UIComponentBase.java:789)
>       
> org.ajax4jsf.component.UIDataAdaptor.processDecodes(UIDataAdaptor.java:1159)
>       
> org.ajax4jsf.component.UIDataAdaptor.processDecodes(UIDataAdaptor.java:1168)
>       
> org.richfaces.component.UIScrollableDataTable.processDecodes(UIScrollableDataTable.java:140)
>       
> javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
>       javax.faces.component.UIForm.processDecodes(UIForm.java:209)
>       
> javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
>       
> org.richfaces.component.UISwitchablePanel.processDecodes(UISwitchablePanel.java:169)
>       org.richfaces.component.UITabPanel.processDecodes(UITabPanel.java:154)
>       
> org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:392)
>       org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
>       
> org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:409)
>       
> com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
>       com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>       com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
>       javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
>       org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
>       org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
>       
> org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
>       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
>       
> Within the class ScrollableDataTableBaseRenderer the string options contains
> for example a string 
> "0,0,19" 
> if rows="19" is set in the specification of the
> scrollableDataTable. Therefore the array si has a length of 3, which results
> into the execption.
> Changing ScrollableDataTableBaseRenderer.java from 
>       component.getAttributes().put(ScrollableDataTableUtils.CLIENT_ROW_KEY, 
> Integer.parseInt(si[3]));
>       
> into 
>       component.getAttributes().put(ScrollableDataTableUtils.CLIENT_ROW_KEY, 
> Integer.parseInt(si[2]));
>       
> seems to resolve this error in the test that have been done locally.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to