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; //以下略・・・。 }