Hi

I checked the stacktrace and the code looks good. There are not recent
changes that could affect in that location.

The issue should be caused by a listener that is not restored
correctly. Take a look at your <f:event listener="..", @ListenerFor
annotations. One suposition is you have registered a listener in a
renderer using @ListenerFor or you have registered programatically a
renderer as a listener, but the renderer does not belong to the same
component and the restore code (see the line for restore renderer):

                //Full restore
                listenerCapability = (Integer) values[2];

                if ((listenerCapability & LISTENER_TYPE_COMPONENT) != 0)
                {
                    listener = UIComponent.getCurrentComponent(context);
                }
                else if ((listenerCapability & LISTENER_TYPE_RENDERER) != 0)
                {
                    listener = (ComponentSystemEventListener)

UIComponent.getCurrentComponent(context).getRenderer(context);
                }
                else
                {
                    listener = (ComponentSystemEventListener)

UIComponentBase.restoreAttachedState(context, values[1]);
                }

will cause a class cast exception. If that's the case, please let us
know the use case to add the additional check and force save the
renderer class in such cases. In other case, to solve this issue it is
necessary provide a test case.

regards,

Leonardo Uribe

2012/3/20 Werner Punz <[email protected]>:
> Best bet is to file a bugreport to get this fixed asap.
>
> Werner
>
>
> Am 19.03.12 22:14, schrieb Wojtek K:
>
>> Hello!
>>
>>
>>
>> Recently we switched from myfaces 2.1.6 to 2.1.7-SNAPSHOT (in 2.1.6 we
>> have problems with ui:repeat).
>>
>>
>>
>> With 2.1.7-SNAPSHOT sometimes we see this stacktrace:
>>
>>
>>
>> Caused by: java.lang.ClassCastException:
>> org.apache.myfaces.renderkit.html.HtmlTextRenderer cannot be cast to
>> javax.faces.event.ComponentSystemEventListener
>> at
>> javax.faces.component.UIComponent$EventListenerWrapper.restoreState(UIComponent.java:1600)
>> at
>> javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1878)
>> at javax.faces.component._DeltaList.restoreState(_DeltaList.java:254)
>> at
>> javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1878)
>> at
>> javax.faces.component.UIComponentBase.restoreFullSystemEventListenerClassMap(UIComponentBase.java:2181)
>> at
>> javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:2021)
>> at javax.faces.component.UIOutput.restoreState(UIOutput.java:209)
>> at
>> javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1593)
>> at
>> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy$2.invokeContextCallback(DefaultFaceletsStateManagementStrategy.java:441)
>> at
>> javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:227)
>> at
>> javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:1136)
>> at
>> javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:238)
>> at
>> javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:1136)
>>
>>
>>
>> Our views are very complicated so i can't find what is wrong.
>>
>> Can this be bug in myfaces? or it is problem in ours views?
>>
>>
>>
>> web.xml
>>
>>
>>
>> <context-param>
>>
>> <param-name>org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE</param-name>
>>         <param-value>true</param-value>
>>     </context-param>
>>
>>     <context-param>
>>
>> <param-name>org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS</param-name>
>>         <param-value>true</param-value>
>>     </context-param>
>>
>>     <context-param>
>>         <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
>>         <param-value>true</param-value>
>>     </context-param>
>>
>>
>> thanks
>>
>>
>>
>> wojtek
>>
>>
>>
>
>

Reply via email to