Here it is: ERROR - Objects - Error serializing object class nl.je.obs.web.admin.medewerkers.EditMedewerker [object=[Page class = nl.je.obs.web.admin.medewerkers.EditMedewerker, id = 3, version = 0]] org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:Unable to serialize class: nl.je.ddd.ui.wicket.DateTextFieldDecorator Field hierarchy is: 3 [class=nl.je.obs.web.admin.medewerkers.EditMedewerker, path=3] private java.lang.Object org.apache.wicket.MarkupContainer.children[class=[ Ljava.lang.Object;] private org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup.markupHelper[2] [class=nl.je.obs.web.admin.medewerkers.EditMedewerker$2, path=3:mwpwForm] private java.lang.Object org.apache.wicket.MarkupContainer.children[class=[ Ljava.lang.Object;] private java.lang.Object org.apache.wicket.MarkupContainer.children[0] [class= org.apache.wicket.extensions.markup.html.tabs.TabbedPanel, path=3:mwpwForm:mw-tabs] private java.lang.Object org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;] private org.apache.wicket.markup.html.link.PopupSettings org.apache.wicket.markup.html.link.Link.popupSettings[1] [class= nl.je.obs.web.admin.medewerkers.PersoonsGegevensPanel, path=3:mwpwForm:mw-tabs:panel] private java.lang.Object org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;] private java.lang.Object org.apache.wicket.markup.html.form.FormComponent.validators[3] [class= org.apache.wicket.datetime.markup.html.form.DateTextField, path=3:mwpwForm:mw-tabs:panel:geboorted] java.lang.Object org.apache.wicket.Component.data[class=[ Ljava.lang.Object;] java.lang.Object org.apache.wicket.Component.data[0][1] [class=nl.je.ddd.ui.wicket.DateTextFieldDecorator$1] final nl.je.ddd.ui.wicket.DateTextFieldDecorator nl.je.ddd.ui.wicket.DateTextFieldDecorator$1.this$0 [class= nl.je.ddd.ui.wicket.DateTextFieldDecorator] <----- field that is not serializable at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:342) at org.apache.wicket.util.io.SerializableChecker.checkFields( SerializableChecker.java:610) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:533) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:388) at org.apache.wicket.util.io.SerializableChecker.checkFields( SerializableChecker.java:610) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:533) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:388) at org.apache.wicket.util.io.SerializableChecker.checkFields( SerializableChecker.java:610) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:533) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:388) at org.apache.wicket.util.io.SerializableChecker.checkFields( SerializableChecker.java:610) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:533) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:388) at org.apache.wicket.util.io.SerializableChecker.checkFields( SerializableChecker.java:610) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:533) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:388) at org.apache.wicket.util.io.SerializableChecker.checkFields( SerializableChecker.java:610) at org.apache.wicket.util.io.SerializableChecker.check( SerializableChecker.java:533) at org.apache.wicket.util.io.SerializableChecker.writeObjectOverride( SerializableChecker.java:678) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322) at org.apache.wicket.util.io.IObjectStreamFactory$2.writeObjectOverride( IObjectStreamFactory.java:125) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322) at org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java :1085) at org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage( AbstractPageStore.java:197) at org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage( DiskPageStore.java:806) at org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put (SecondLevelCacheSessionStore.java:332) at org.apache.wicket.Session.requestDetached(Session.java:1364) at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1091) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1334) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java :354) at org.apache.wicket.protocol.http.WicketFilter.doFilter( WicketFilter.java:194) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter( ServletHandler.java:1089) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal (OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:75) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter( ServletHandler.java:1089) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java :365) at org.mortbay.jetty.security.SecurityHandler.handle( SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java :181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java :712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java :139) at org.mortbay.jetty.Server.handle(Server.java:295) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java :503) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete( HttpConnection.java:827) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:511) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379) at org.mortbay.jetty.bio.SocketConnector$Connection.run( SocketConnector.java:226) at org.mortbay.thread.BoundedThreadPool$PoolThread.run( BoundedThreadPool.java:442) Caused by: java.io.NotSerializableException: nl.je.ddd.ui.wicket.DateTextFieldDecorator at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156) 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.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.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.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.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$2.writeObjectOverride( IObjectStreamFactory.java:117) ... 29 more
2008/2/8, Sebastiaan van Erk <[EMAIL PROTECTED]>: > > Hi, > > I don't see any problem with the code below, that is, from what you > pasted I don't see any references to a TextFieldDecorator being kept. > > However when Wicket says that something is not serializable it gives you > the entire object graph path to the object that is causing the problem, > so seeing the full exception would help debug the problem. > > Regards, > Sebastiaan > > Martijn Lindhout wrote: > > Hi all, > > > > I have this code in a Panel: > > > > TextField name = new TextField("name", new PropertyModel(person, " > name.value > > ")); > > add(WidgetDecorator.decorate(name).from(person.getName()); > > > > I have domain objects (person) with rich type definities. getName() > returns > > a Text object that contains all constraints imposed on the field > (required, > > min, max, etc). > > > > WidgetDecorator is a class I build that enriches a particular Wicket > > component, based on the type information from the domain object. All > > decorate methods on the WidgetDecorator are static and return a > component > > specific decorator, so in the sample above a new TextFieldDecorator will > be > > instantiated and returned. It looks like this: > > > > public class TextFieldDecorator { > > > > private TextField widget; > > > > public TextFieldDecorator(TextField textField) { > > this.widget = textField; > > } > > > > public TextField from(Text textType) { > > widget.setRequired(textType.isRequired()); > > widget.add(StringValidator.lengthBetween(textType.getMinLength > (), > > textType.getMaxLength())); > > widget.setLabel(new Model(textType.getFieldName())); > > return widget; > > } > > } > > > > Now the problem: Wicket complains that my TextFieldDecorator is not > > serializable. But why? IMO it is not added to the component hierarchy. > The > > argument to the panel.add(...) method is the result of evaluating: > > WidgetDecorator.decorate(name).from(person.getName(), which returns the > > TextField widget. > > > > Should I redo my Java programmers exam? > > > > Thanx, > > > > -- Martijn Lindhout JointEffort IT Services http://www.jointeffort.nl [EMAIL PROTECTED] +31 (0)6 18 47 25 29