Any object stored in a model must be serializable and your object
com.tvh.website.application.external.ApplicationPage$ExternalApplicationBean
is not.

You can either make it serializable or use a model that finds your
ExternalApplicationBean when it loads e.g. LoadableDetachableModel.  You can
even nest this model inside a CompoundPropertyModel like

new CompoundPropertyModel(new
MyBeanFindingLoadableDetachableModel(myBeansId)))

JD

The issue is due to how wicket saves pages to disc in order to support the
back button.


Marieke Vandamme wrote:
> 
> Hello,
> 
> I'm using a rather complex CompoundPropertyModel on my Form. That Form
> contains multiple Panels that also use the same CompoundPropertyModel. So
> I can't post any source code, but I hope my stacktrace will be enough.
> 
> I also found a rather simular problem on the jira site, but not for wicket
> but MyFaces. 
> http://issues.apache.org/jira/browse/TRINIDAD-27
> 
> Should I post this on the jira for wicket or am I doing something wrong?
> Thanks !
> 
> 
> ERROR - Error serializing object class
> com.tvh.website.application.external.ApplicationPage [object=[Page class =
> com.tvh.website.application.external.ApplicationPage, id = 0, version = 0,
> ajax = 2]]
> org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
> Unable to serialize class: java.util.RandomAccessSubList
> Field hierarchy is:
>   0 [class=com.tvh.website.application.external.ApplicationPage, path=0]
>     private java.lang.Object org.apache.wicket.MarkupContainer.children
> [class=[Ljava.lang.Object;]
>       private java.lang.Object
> org.apache.wicket.MarkupContainer.children[2]
> [class=org.apache.wicket.markup.html.form.SubmitLink,
> path=0:btnSubmitApplicant]
>         private org.apache.wicket.markup.html.form.Form
> org.apache.wicket.markup.html.form.AbstractSubmitLink.form
> [class=com.tvh.website.application.ApplicantPanel$ApplicantForm,
> path=0:pnlApplicant:webform]
>           java.lang.Object org.apache.wicket.Component.data
> [class=org.apache.wicket.model.CompoundPropertyModel]
>             private java.lang.Object
> org.apache.wicket.model.CompoundPropertyModel.target
> [class=com.tvh.website.application.external.ApplicationPage$ExternalApplicationBean]
>               private java.util.HashMap
> com.tvh.website.application.external.ApplicationPage$ExternalApplicationBean.extras
> [class=java.util.HashMap]
>                 private java.util.HashMap
> com.tvh.website.application.external.ApplicationPage$ExternalApplicationBean.extras[write:1][write:2]
> [class=java.util.RandomAccessSubList] <----- field that is not
> serializable
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:349)
>         at
> org.apache.wicket.util.io.SerializableChecker.access$500(SerializableChecker.java:63)
>         at
> org.apache.wicket.util.io.SerializableChecker$1InterceptingObjectOutputStream.replaceObject(SerializableChecker.java:497)
>         at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1116)
>         at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>         at java.util.HashMap.writeObject(HashMap.java:1001)
>         at sun.reflect.GeneratedMethodAccessor81.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.writeObject(ObjectOutputStream.java:326)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:504)
>         at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:618)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:541)
>         at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:618)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:541)
>         at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:618)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:541)
>         at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:618)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:541)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:395)
>         at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:618)
>         at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:541)
>         at
> org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:687)
>         at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322)
>         at
> org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:127)
>         at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322)
>         at
> org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1097)
>         at
> org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageStore.java:200)
>         at
> org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage(DiskPageStore.java:814)
>         at
> org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put(SecondLevelCacheSessionStore.java:327)
>         at org.apache.wicket.Session.requestDetached(Session.java:1391)
>         at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1094)
>         at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1365)
>         at org.apache.wicket.RequestCycle.request(RequestCycle.java:497)
>         at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:387)
>         at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:199)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
>         at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>         at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>         at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>         at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.io.NotSerializableException: java.util.RandomAccessSubList
>         at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
>         at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>         at java.util.HashMap.writeObject(HashMap.java:1001)
>         at sun.reflect.GeneratedMethodAccessor81.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.defaultWriteFields(ObjectOutputStream.java:1509)
>         at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
>         at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>         at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>         at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>         at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
>         at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>         at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>         at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>         at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
>         at org.apache.wicket.Component.writeObject(Component.java:4339)
>         at sun.reflect.GeneratedMethodAccessor78.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.defaultWriteFields(ObjectOutputStream.java:1509)
>         at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
>         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.defaultWriteFields(ObjectOutputStream.java:1509)
>         at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
>         at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>         at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>         at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>         at
> org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:119)
>         ... 25 more
> 
> 

-- 
View this message in context: 
http://www.nabble.com/NotSerializableException%3A-java.util.RandomAccessSubList-tp19083666p19083842.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to