Ok the problem is that somehow you are holding on to a FileUpload in your page And those are not meant to be kept over requests.
it seems that you keep it if i read it right in a normal Model: [class=org.apache.wicket.model.Model] private java.io.Serializable org.apache.wicket.model.Model.object [class=org.apache.wicket.markup.html.form.upload.FileUpload] How do you create the FileUploadField? I guess with a normal new Model()? I think we need to fix that somehow in the detach of the FUF because if the model is set we should look into the model and if it is a FileUpload get rid of it or something. johan On Nov 8, 2007 3:26 PM, James Perry <[EMAIL PROTECTED]> wrote: > Hello Johan, > > Thanks for the repsonse. :-) > > All I have done is follow the code within theSingleFileUpload example > in wicketstuff.com. Is this a bug or am I doing something wrong? I am > using Wicket 1.3.0-beta4 and here is the stack of the exception: > > ERROR - Objects - Error serializing object class > com.wicketcart.pages.admin.AddProductPage [object=[Page class = > com.wicketcart.pages.admin.AddProductPage, id = 2, version = 0]] > > org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException: > Unable to serialize class: > org.apache.wicket.util.io.DeferredFileOutputStream > Field hierarchy is: > 2 [class=com.wicketcart.pages.admin.AddProductPage, path=2] > private java.lang.Object > org.apache.wicket.MarkupContainer.children > [class=com.wicketcart.components.MenuBorder, path=2:libBorder] > private java.lang.Object > org.apache.wicket.MarkupContainer.children > [class=[Lorg.apache.wicket.Component;] > private > org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper > > org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup.markupHelper > [7] > [class=com.wicketcart.pages.admin.AddProductPage$AddProductForm, > path=2:libBorder:productForm] > private java.lang.Object > org.apache.wicket.MarkupContainer.children > [class=[Lorg.apache.wicket.Component;] > private final java.lang.String > org.apache.wicket.markup.html.form.ChoiceRenderer.idExpression[7] > [class=org.apache.wicket.markup.html.form.upload.FileUploadField, > path=2:libBorder:productForm:fileInput] > org.apache.wicket.model.IModel > org.apache.wicket.Component.model > [class=org.apache.wicket.model.Model] > private java.io.Serializable > org.apache.wicket.model.Model.object > [class=org.apache.wicket.markup.html.form.upload.FileUpload] > private final org.apache.wicket.util.upload.FileItem > org.apache.wicket.markup.html.form.upload.FileUpload.item > [class=org.apache.wicket.util.upload.DiskFileItem] > private > org.apache.wicket.util.io.DeferredFileOutputStream > org.apache.wicket.util.upload.DiskFileItem.dfos > [class=org.apache.wicket.util.io.DeferredFileOutputStream] <----- > field that is not serializable > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:347) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:393) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:393) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at org.apache.wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:615) > at org.apache.wicket.util.io.SerializableChecker.check( > SerializableChecker.java:538) > at > org.apache.wicket.util.io.SerializableChecker.writeObjectOverride( > SerializableChecker.java:683) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java > :298) > at > org.apache.wicket.util.io.IObjectStreamFactory$1.writeObjectOverride( > IObjectStreamFactory.java:74) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java > :298) > 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:709) > at > org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put > (SecondLevelCacheSessionStore.java:337) > at org.apache.wicket.Session.requestDetached(Session.java:1391) > at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1016) > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1263) > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489) > at org.apache.wicket.protocol.http.WicketFilter.doGet( > WicketFilter.java:319) > at org.apache.wicket.protocol.http.WicketServlet.doPost( > WicketServlet.java:139) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at org.mortbay.jetty.servlet.ServletHolder.handle( > ServletHolder.java:442) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter( > ServletHandler.java:1051) > at > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal > (OpenSessionInViewFilter.java:174) > at org.springframework.web.filter.OncePerRequestFilter.doFilter( > OncePerRequestFilter.java:77) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter( > ServletHandler.java:1042) > at org.mortbay.jetty.servlet.ServletHandler.handle( > ServletHandler.java:355) > at org.mortbay.jetty.servlet.SessionHandler.handle( > SessionHandler.java:226) > at org.mortbay.jetty.handler.ContextHandler.handle( > ContextHandler.java:615) > at org.mortbay.jetty.handler.ContextHandlerCollection.handle( > ContextHandlerCollection.java:150) > at org.mortbay.jetty.handler.HandlerCollection.handle( > HandlerCollection.java:123) > at org.mortbay.jetty.handler.HandlerWrapper.handle( > HandlerWrapper.java:141) > at org.mortbay.jetty.Server.handle(Server.java:272) > at org.mortbay.jetty.HttpConnection.handlerRequest( > HttpConnection.java:396) > at org.mortbay.jetty.HttpConnection$RequestHandler.content( > HttpConnection.java:666) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:613) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:198) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:311) > at org.mortbay.jetty.nio.HttpChannelEndPoint.run( > HttpChannelEndPoint.java:270) > at org.mortbay.thread.BoundedThreadPool$PoolThread.run( > BoundedThreadPool.java:475) > Caused by: java.io.NotSerializableException: > org.apache.wicket.util.io.DeferredFileOutputStream > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1081) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java > :1251) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1075) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java > :1251) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1075) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1375) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1347) > at java.io.ObjectOutputStream.writeOrdinaryObject( > ObjectOutputStream.java:1290) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1079) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java > :302) > at > org.apache.wicket.util.io.IObjectStreamFactory$1.writeObjectOverride( > IObjectStreamFactory.java:66) > > On Nov 7, 2007 10:06 PM, Johan Compagner <[EMAIL PROTECTED]> wrote: > > what is the full stack of the exception? > > because who does have that field? > > Streams should always be transient because those can't be serialized > > whats the wicket version? > > > > johan > > > > > > > > On 11/6/07, James Perry <[EMAIL PROTECTED]> wrote: > > > > > > Hello fellow Wicket users, > > > > > > I am getting a > > > > org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException: > > > Unable to serialize class: > > > org.apache.wicket.util.io.DeferredFileOutputStream exception when I > > > added a file upload feature to my AddProductForm. > > > > > > My form is serialiazable yet I don't which of its child components are > > > not serializable. Can anyone shed any light on this? > > > > > > Cheers, > > > James. > > > > > > Here is my Page class: > > > > > > public class AddProductPage extends AdminPage { > > > > > > private static final long serialVersionUID = 1L; > > > > > > @SpringBean(name="adminService") > > > private AdminService adminService; > > > > > > public AddProductPage(Product product) { > > > MenuBorder border = new MenuBorder("libBorder"); > > > border.add(new FeedbackPanel("feedback")); > > > border.add(new AddProductForm("productForm", product)); > > > add(border); > > > } > > > > > > private final class AddProductForm extends Form { > > > > > > private static final long serialVersionUID = 1L; > > > > > > private FileUploadField fileUploadField; > > > > > > public AddProductForm(String id, Product product) { > > > super(id, new CompoundPropertyModel(product)); > > > setMultiPart(true); > > > add(new RequiredTextField("name")); > > > add(new RequiredTextArea("description")); > > > add(new RequiredTextField("sellValue", > > > BigDecimal.class)); > > > add(new RequiredTextField("units", Long.class > )); > > > add(new CheckBox("onSell")); > > > add(new DropDownChoice("category", > > > catalogService.getCategories())); > > > add(new DropDownChoice("manufacturer", > > > catalogService.getManufacturers())); > > > add(fileUploadField = new > > > FileUploadField("fileInput", new > > > Model(fileUploadField))); > > > setMaxSize(Bytes.megabytes(100)); > > > } > > > > > > @Override > > > protected void onSubmit() { > > > final FileUpload upload = > > > fileUploadField.getFileUpload(); > > > if (upload != null) > > > System.out.println("File is not empty! > Whoo > > > hooo!"); > > > else > > > System.out.println("File is empty! Whoo > > > hooo!"); > > > fileUploadField.detachModels(); > > > /**Product product = (Product) > getModelObject(); > > > product.setEntryDate(new Timestamp( > > > System.currentTimeMillis())); > > > product.setImageURL("uploads/"); > > > System.out.println(product.getCategory()); > > > adminService.saveProduct(product); > > > setResponsePage(ViewProductsPage.class);**/ > > > } > > > > > > } > > > > > > } > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >