Dmitry,
It is not at all obvious to me that this is a simple coding error
because saveChildStampState() always returns null or Object[].
Regards,
Max
Dmitry Barsukov wrote:
Max,
I'm not sure if I modify anything within the table...
The form we have here is kinda complicated and hard to rectify keeping
the defect appearing.
The exception is thrown when a few manual operations on the form are done,
it's not just open web page and that's it.
I agree with you that finding the root of a problem is required.
But what you can easily observe is the simple coding error : an object which
is not an array is being casted to an array type. This causes an exception.
My patch fixes coding mistake only.
Nevertheless, I will allocate some more of time onto rectification of the
issue.
Regards,
Dmitry
On 21 June 2010 18:08, Max Starets <[email protected]> wrote:
Dmitry,
We need to figure out what is going on first.
Are you modifying components within table dynamically?
Since the same components are being stamped for each row, it is expected
that the component
set does not change when each row is decoded or rendered.
Regards,
Max Starets
Dmitry Barsukov wrote:
Hi All,
org.apache.myfaces.trinidad.component.StampState.restoreChildStampState(StampState.java:201)
201: Object[] state = (Object[]) stampState;
stampState is not an array when casted to an array. The rest of code works
with the array "state".
The line above is causing me the exception.
It seems that this line should be replaced by:
Object state[] = new Object[1];
if (stampState.getClass().isArray())
state = (Object[]) stampState;
else
state[0] = stampState;
Please find the patch attached. Someone may have a better idea how to fix
the issue.
My apologies to Trinidad community for not being able to rectify the
defect. It just disappears for unknown reason on the way when I am trying to
rectify it.
Caused by: java.lang.ClassCastException: Class cannot be casted to array
at
org.apache.myfaces.trinidad.component.StampState.restoreChildStampState(StampState.java:201)
at
org.apache.myfaces.trinidad.component.UIXTable.restoreStampState(UIXTable.java:426)
at
org.apache.myfaces.trinidad.component.UIXCollection._restoreStampState(UIXCollection.java:1813)
at
org.apache.myfaces.trinidad.component.UIXCollection.postRowDataChange(UIXCollection.java:809)
at
org.apache.myfaces.trinidad.component.UIXCollection.setRowIndex(UIXCollection.java:505)
at
org.apache.myfaces.trinidad.component.UIXTable._processStamps(UIXTable.java:517)
at
org.apache.myfaces.trinidad.component.UIXTable.processFacetsAndChildren(UIXTable.java:374)
at
org.apache.myfaces.trinidad.component.UIXCollection.decodeChildrenImpl(UIXCollection.java:202)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:1062)
at
org.apache.myfaces.trinidad.component.UIXCollection.processDecodes(UIXCollection.java:196)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:1076)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:1062)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:888)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:1076)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:1062)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:888)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:1076)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:1062)
at
org.apache.myfaces.trinidad.component.UIXForm.processDecodes(UIXForm.java:75)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:1076)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:1062)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:888)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:1076)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:1062)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:888)
at
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:705)
at javax.faces.component.UIViewRoot.access$001(UIViewRoot.java:62)
at javax.faces.component.UIViewRoot$1.process(UIViewRoot.java:121)
at javax.faces.component.UIViewRoot.process(UIViewRoot.java:260)
at
javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:117)
at
org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:32)
at
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
at
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:178)
... 22 more
---
Sincerely yours
Dmitry Barsukov