You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by James Perry <ja...@gmail.com> on 2007/11/06 16:46:19 UTC

WicketNotSerializableException withi FileUpload

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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: WicketNotSerializableException withi FileUpload

Posted by James Perry <ja...@gmail.com>.
I removed the Model instantion from the FileUploadField and this issue has gone.

Cheers!
J.

On Nov 8, 2007 11:31 PM, Johan Compagner <jc...@gmail.com> wrote:
> 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 <ja...@gmail.com> 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 <jc...@gmail.com> 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 <ja...@gmail.com> 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: users-unsubscribe@wicket.apache.org
> > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: WicketNotSerializableException withi FileUpload

Posted by Johan Compagner <jc...@gmail.com>.
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 <ja...@gmail.com> 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 <jc...@gmail.com> 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 <ja...@gmail.com> 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: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Re: WicketNotSerializableException withi FileUpload

Posted by James Perry <ja...@gmail.com>.
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 <jc...@gmail.com> 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 <ja...@gmail.com> 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: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: WicketNotSerializableException withi FileUpload

Posted by Johan Compagner <jc...@gmail.com>.
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 <ja...@gmail.com> 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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>