[ https://issues.apache.org/jira/browse/TOMAHAWK-1460?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe reopened TOMAHAWK-1460: -------------------------------------- I have to revert the patch, go back to stage 1, and try other alternatives > ClassCastException when testing Tomahawk 1.1.9 table demos when > preserveDataModel="true" > ---------------------------------------------------------------------------------------- > > Key: TOMAHAWK-1460 > URL: https://issues.apache.org/jira/browse/TOMAHAWK-1460 > Project: MyFaces Tomahawk > Issue Type: Bug > Components: Extended Datatable > Affects Versions: 1.1.9 > Environment: Mac OS 10.5.8 > JDK 1.6.0 > Mojarra 2.0.0-SNAPSHOT > Glassfish V3 > Reporter: Ryan Lubke > Assignee: Leonardo Uribe > Fix For: 1.1.10-SNAPSHOT > > > When executing 'Paged and Sortable', 'Master-Detail', and 'Optional > Header/Footer', a class cast exception is raised during post-back operations > to > update the view. > java.lang.ClassCastException: javax.faces.model.ListDataModel cannot be cast > to > org.apache.myfaces.component.html.ext._SerializableDataModel > at > org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.updateModelFromPreservedDataModel(AbstractHtmlDataTable.java:493) > at > org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.processUpdates(AbstractHtmlDataTable.java:479) > at > javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1108) > at javax.faces.component.UIForm.processUpdates(UIForm.java:265) > at > javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1108) > at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1238) > I've done some debugging here and have found this block of code being executed > during processRestoreState(): > protected DataModel getDataModel() > { > if (_preservedDataModel != null) > { > setDataModel(_preservedDataModel); > _preservedDataModel = null; > } > return super.getDataModel(); > } > The call stack at this point in time is: > at > org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.getDataModel(AbstractHtmlDataTable.java:839) > at > org.apache.myfaces.component.html.ext.HtmlDataTableHack.setRowIndex(HtmlDataTableHack.java:282) > at > org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.setRowIndex(AbstractHtmlDataTable.java:276) > at javax.faces.component.UIData.visitColumnsAndRows(UIData.java:1539) > at javax.faces.component.UIData.visitTree(UIData.java:1207) > at javax.faces.component.UIComponent.visitTree(UIComponent.java:1454) > at javax.faces.component.UIComponent.visitTree(UIComponent.java:1454) > at javax.faces.component.UIForm.visitTree(UIForm.java:333) > at javax.faces.component.UIComponent.visitTree(UIComponent.java:1454) > at > javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:868) > The interesting point here is that _preserveDataModel is set to null. > Later, during processUpdates(), updateModelFromPreservedDataModel() will > call getDataModel (as listed above), however, since _preservedDataModel was > set > to null, the call is delegated to the super class, UIData, which returns > ListDataModel. > This change in the code path is new spec required functionality where > UIViewRoot.processRestoreState() > uses the TreeVisitor to notify components of the PostRestoreStateEvent. > Given this, I'm sure the > problem will be manifest with MyFaces 2.0.0. > WORKAROUND: set preservDataModel to false. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.