You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Alexander Zynevich (JIRA)" <de...@myfaces.apache.org> on 2007/07/11 11:35:04 UTC
[jira] Commented: (TRINIDAD-91) UIOutput puts Converter as element
of object arrays (holding component state), w/o calling to its saveState()
method. It causes NotSerializableException
[ https://issues.apache.org/jira/browse/TRINIDAD-91?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12511702 ]
Alexander Zynevich commented on TRINIDAD-91:
--------------------------------------------
Thanks, that helped!
> UIOutput puts Converter as element of object arrays (holding component state), w/o calling to its saveState() method. It causes NotSerializableException
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: TRINIDAD-91
> URL: https://issues.apache.org/jira/browse/TRINIDAD-91
> Project: MyFaces Trinidad
> Issue Type: Bug
> Components: Plugins
> Affects Versions: 1.2.1-plugins, 1.2.2-plugins
> Environment: Geronimo-2.0-tomcat6-jee5-m6-rc1
> Reporter: Alexander Zynevich
> Assignee: Matthias Weßendorf
> Fix For: 1.2.1.1-plugins, 1.2.2-plugins
>
>
> The following snipet:
> <h:outputText id="cellStrtDate" styleClass="table-text-norm" value="#{obj.srvDate}" >
> <f:convertDateTime pattern="yyyy-MM-dd" timeZone="#{commonInfo.timeZone}" />
> </h:outputText>
> causes:
> java.io.NotSerializableException: *javax.faces.convert.DateTimeConverter*
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at org.apache.myfaces.application.jsp.JspStateManagerImpl.serializeView(JspStateManagerImpl.java:638)
> at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(JspStateManagerImpl.java:538)
> at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:371)
> at javax.faces.application.StateManager.saveView(StateManager.java:47)
> at org.apache.myfaces.application.jsp.JspViewHandlerImpl$StateMarkerAwareWriter.flushToWriter(JspViewHandlerImpl.java:387)
> at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:322)
> at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
> at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
> of course Converter and DateTimeConverter are not serializable....
> The problem is that in 1.2 branch of JSF in UIOutput converter is put to Object[] array for serialization w/o delegating to StateHolder interface of Converter (from decompiled code):
> public Object saveState(FacesContext facesContext)
> {
> Object values[] = new Object[3];
> values[0] = super.saveState(facesContext);
> values[1] = _value;
> values[2] = _converter;
> return ((Object) (values));
> }
> however it should be like in trunk http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIOutput.java?revision=482726&view=markup:
> public Object saveState(FacesContext context)
> {
> Object values[] = new Object[3];
> values[0] = super.saveState(context);
> values[1] = saveAttachedState(context, _converter);
> values[2] = _value;
> return values;
> }
> by the way, I failed to find UIOutput at http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/
> does it mean that UIOutput is somehow generated in "jsf12" branch or comes from https://javaserverfaces.dev.java.net/?
> But on https://javaserverfaces.dev.java.net/ the latest sources has correct variant.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.