[Wicket-ja-user 607] ListView を内にFileUploadField使用時のWicketNotSerializableExceptionの対処方法

Back to archive index

maeda aaake****@gmail*****
2012年 2月 6日 (月) 16:41:12 JST


いつもお世話になっております。
maedaです。

ListView内にFileUploadFieldを配置し
複数のファイルを一度にアップロードする処理を行っているのですが
処理は正しく行われますが、ログに以下の例外が表示されてしまいします。


SessionStoreにDiskPageStoreを指定しているので
DeferredFileOutputStreamクラスがシリアライズできないといわれて怒られているということでしょうか?

SessionStoreにHttpSessionStoreを指定することにより下記例外は表示されなくなったのですが
DiskPageStoreを指定したままで他に対応策等ありませんでしょうか?

分かりにくい説明ですが、よろしくお願いいたします。

ログ
Field hierarchy is:
  4 [class=iandc.wicket.page.pdf.upload.PdfFindList, path=4]
    private java.lang.Object org.apache.wicket.MarkupContainer.children [class=org.apache.wicket.markup.html.form.Form, path=4:form]
      private java.lang.Object org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;]
        java.util.HashMap iandc.wicket.validation.validator.InputValidator.map[write:1][write:2][4] [class=iandc.wicket.page.pdf.upload.PdfFindList$3, path=4:form:list]
          java.lang.Object org.apache.wicket.Component.data [class=org.apache.wicket.model.util.WildcardListModel]
            private java.lang.Object org.apache.wicket.model.util.GenericBaseModel.object [class=java.util.ArrayList]
              private java.lang.Object org.apache.wicket.model.util.GenericBaseModel.object[write:1] [class=iandc.wicket.form.pdf.PdfFindListBean]
                private org.apache.wicket.markup.html.form.upload.FileUpload iandc.wicket.form.pdf.PdfFindListBean.fileUploadField [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



以下テストソース
public class TestPage extends AuthenticatedWebPage implements Const {

	Form form;
	List<TestBean> list;

	/**
	 *
	 * 初期処理
	 *
	 *
	 */
	public TestPage(FindBean findBean) {
		//FORM
		form = new Form("form",new CompoundPropertyModel(findBean));
		form.setMultiPart(true);
		this.add(form);

		//一覧取得
		list = service.find(pdfFindBean);

		//一覧
		final ListView listview = new ListView("list",pdfList){
			@Override
			protected void populateItem(final ListItem listItem) {
				final TestBean buf = (TestBean) listItem.getModelObject();

				//各項目
				listItem.setModel(new CompoundPropertyModel(buf));
				listItem.add(new Label("no"));
				listItem.add(new FileUploadField("fileUploadField"));
			}
		};
		form.add(listview);

		form.add(uploadLink);

	}

	/**
	 *
	 * アップロード
	 *
	 */
	private SubmitLink uploadLink = new SubmitLink("uploadLink"){
		@Override
		public void onSubmit(){
			for(TestBean buf:list){
				if(buf.getFileUploadField() == null){
					continue;
				}
			}

		}
	};

}



public class TestBean extends implements Serializable {
	private String no;
	private Integer key;
	private FileUpload fileUploadField;

	//以下略・・・。
}




Wicket-ja-user メーリングリストの案内
Back to archive index