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]
>
>

Reply via email to