Please use pastebin.com or similar for paste'ing code :)

Regards

Žilvinas Vilutis

Mobile:   (+370) 652 38353
E-mail:   cika...@gmail.com



On Tue, Dec 7, 2010 at 12:56 PM, Cédric Thiébault
<cedric.thieba...@gmail.com> wrote:
> You're right, it works :-)
>
> So if I understand, all request will be multipart just because one of
> theme needs to be multipart...
>
> Thanks for your help François!
>
> Cedric
>
>
> 2010/12/7 François Meillet <fm...@meillet.com>:
>>   final FormBean formBean = new FormBean();
>>   Model<FormBean> model = new Model<FormBean>(formBean);
>>   Form<FormBean> form = new Form<FormBean>("form", model);
>>
>>   form.setMultiPart(false);   ---->>>>>>>>>>>>  should be true
>>
>>   add(form);
>>
>>
>> François
>>
>>
>>
>> Le 7 déc. 2010 à 20:45, Cédric Thiébault a écrit :
>>
>>> It is...
>>>
>>> Here is the code...
>>>
>>> **** HomePage.html
>>> <html 
>>> xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd";>
>>>  <body>
>>>
>>>    <div wicket:id="feedback">feedback</div>
>>>
>>>    <form wicket:id="form">
>>>      Input text: <input type="text" wicket:id="text" size="40" />
>>>      <br />
>>>      <div wicket:id="files">files</div>
>>>      <br />
>>>      <div wicket:id="modalPanel">modalPanel</div>
>>>      <div wicket:id="modalPage">modalPage</div>
>>>      <a wicket:id="showModalPanel">Add new file (panel modal)</a> |
>>>      <a wicket:id="showModalPage">Add new file (page modal)</a>
>>>      <br />
>>>      <br />
>>>      <input type="submit" wicket:id="submit" value="Submit input text" />
>>>
>>>    </form>
>>>
>>>  </body>
>>> </html>
>>>
>>>
>>> *** UploadPanel.html
>>> <html xmlns:wicket>
>>>  <wicket:panel>
>>>
>>>    <div wicket:id="feedback">feedback</div>
>>>
>>>    <form wicket:id="form">
>>>      File: <input type="file" wicket:id="uploadField" size="40" />
>>>      <br />
>>>      <input type="submit" wicket:id="submit" value="Upload" />
>>>    </form>
>>>
>>>  </wicket:panel>
>>> </html>
>>>
>>>
>>> *** HomePage.java
>>> public class HomePage extends WebPage {
>>>
>>>  private final transient Logger logger = 
>>> LoggerFactory.getLogger(getClass());
>>>
>>>  public HomePage() {
>>>
>>>    final FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
>>>    add(feedbackPanel);
>>>
>>>    final FormBean formBean = new FormBean();
>>>    Model<FormBean> model = new Model<FormBean>(formBean);
>>>    Form<FormBean> form = new Form<FormBean>("form", model);
>>>    form.setMultiPart(false);
>>>    add(form);
>>>
>>>    form.add(new TextField<String>("text", new
>>> PropertyModel<String>(model, "text")));
>>>
>>>    IColumn<String> column = new AbstractColumn<String>(new
>>> Model<String>("File")) {
>>>     �...@override
>>>      public void populateItem(Item<ICellPopulator<String>> cellItem,
>>> String componentId, IModel<String> rowModel) {
>>>        cellItem.add(new Label(componentId, rowModel));
>>>      }
>>>    };
>>>
>>>    final DataTable<String> filesDataTable = new
>>> DataTable<String>("files", new IColumn[] { column },
>>>        new ListDataProvider<String>(formBean.getFiles()), 10);
>>>    filesDataTable.setOutputMarkupId(true);
>>>    form.add(filesDataTable);
>>>
>>>    final ModalWindow modalPanel = new ModalWindow("modalPanel");
>>>    modalPanel.setTitle("Upload File");
>>>    modalPanel.setInitialWidth(500);
>>>    modalPanel.setInitialHeight(200);
>>>    form.add(modalPanel);
>>>
>>>    form.add(new AjaxLink<Void>("showModalPanel") {
>>>     �...@override
>>>      public void onClick(AjaxRequestTarget target) {
>>>        modalPanel.setContent(new UploadPanel(modalPanel.getContentId()) {
>>>         �...@override
>>>          protected void onSubmit(@SuppressWarnings("hiding")
>>> AjaxRequestTarget target, String fileName) {
>>>            formBean.getFiles().add(fileName);
>>>            target.addComponent(filesDataTable);
>>>            modalPanel.close(target);
>>>          }
>>>        });
>>>        modalPanel.show(target);
>>>      }
>>>    });
>>>
>>>    final ModalWindow modalPage = new ModalWindow("modalPage");
>>>    modalPage.setTitle("Upload File");
>>>    modalPage.setInitialWidth(500);
>>>    modalPage.setInitialHeight(200);
>>>    form.add(modalPage);
>>>
>>>    form.add(new AjaxLink<Void>("showModalPage") {
>>>     �...@override
>>>      public void onClick(AjaxRequestTarget target) {
>>>        modalPage.setPageCreator(new PageCreator() {
>>>         �...@override
>>>          public Page createPage() {
>>>            return new UploadPage() {
>>>             �...@override
>>>              protected void onSubmit(@SuppressWarnings("hiding")
>>> AjaxRequestTarget target, String fileName) {
>>>                formBean.getFiles().add(fileName);
>>>                target.addComponent(filesDataTable);
>>>                modalPage.close(target);
>>>              }
>>>            };
>>>          }
>>>        });
>>>        modalPage.show(target);
>>>      }
>>>    });
>>>
>>>    form.add(new AjaxButton("submit") {
>>>
>>>     �...@override
>>>      protected void onSubmit(AjaxRequestTarget target,
>>> @SuppressWarnings("hiding") Form<?> form) {
>>>        logger.info("SUBMIT:");
>>>        logger.info("text: " + formBean.getText());
>>>        logger.info("files: " + formBean.getFiles());
>>>      }
>>>
>>>     �...@override
>>>      protected void onError(AjaxRequestTarget target,
>>> @SuppressWarnings("hiding") Form<?> form) {
>>>        target.addComponent(feedbackPanel);
>>>      }
>>>
>>>    });
>>>
>>>  }
>>>
>>>  public static class FormBean implements Serializable {
>>>
>>>    private String text;
>>>    private List<String> files = new ArrayList<String>();
>>>
>>>    public String getText() {
>>>      return text;
>>>    }
>>>
>>>    public void setText(String text) {
>>>      this.text = text;
>>>    }
>>>
>>>    public List<String> getFiles() {
>>>      return files;
>>>    }
>>>
>>>    public void setFiles(List<String> files) {
>>>      this.files = files;
>>>    }
>>>
>>>  }
>>>
>>> }
>>>
>>> *** UploadPanel.java
>>> public abstract class UploadPanel extends Panel {
>>>
>>>  private final transient Logger logger = 
>>> LoggerFactory.getLogger(getClass());
>>>
>>>  public UploadPanel(String id) {
>>>    super(id);
>>>
>>>    final FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
>>>    add(feedbackPanel);
>>>
>>>    Form<?> form = new Form<Void>("form");
>>>    form.setMultiPart(true);
>>>    add(form);
>>>
>>>    final FileUploadField uploadField = new
>>> FileUploadField("uploadField", new Model<FileUpload>());
>>>    form.add(uploadField);
>>>
>>>    form.add(new AjaxButton("submit") {
>>>
>>>     �...@override
>>>      protected void onSubmit(AjaxRequestTarget target,
>>> @SuppressWarnings("hiding") Form<?> form) {
>>>        FileUpload fileUpload = uploadField.getFileUpload();
>>>        if (fileUpload != null) {
>>>          String fileName = fileUpload.getClientFileName();
>>>          logger.info("FILE: " + fileName);
>>>          UploadPanel.this.onSubmit(target, fileName);
>>>        } else {
>>>          error("Unable to upload file.");
>>>          target.addComponent(feedbackPanel);
>>>        }
>>>      }
>>>
>>>     �...@override
>>>      protected void onError(AjaxRequestTarget target,
>>> @SuppressWarnings("hiding") Form<?> form) {
>>>        target.addComponent(feedbackPanel);
>>>      }
>>>
>>>    });
>>>
>>>  }
>>>
>>>  protected abstract void onSubmit(AjaxRequestTarget target, String 
>>> fileName);
>>>
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2010/12/7 François Meillet <fm...@meillet.com>:
>>>> it has to be in the main form afaik
>>>> François
>>>>
>>>> Le 7 déc. 2010 à 20:27, Cédric Thiébault a écrit :
>>>>
>>>>> I've done this in the modal window form... And I set it to false for
>>>>> the main form that is not used for uploading.
>>>>> The upload works well, it's when my modal is closed, the main form
>>>>> (not the one for the upload) throws an exception on submit.
>>>>>
>>>>> Here is the code that I've attached to the Jira issue:
>>>>> http://dl.dropbox.com/u/2167784/wicket-modal-upload.zip
>>>>>
>>>>> Cedric
>>>>>
>>>>>
>>>>> 2010/12/7 François Meillet <fm...@meillet.com>:
>>>>>> just add
>>>>>> form.setMultiPart(true);
>>>>>>
>>>>>> in your form
>>>>>>
>>>>>> François
>>>>>>
>>>>>> Le 7 déc. 2010 à 20:11, Cédric Thiébault a écrit :
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I want to upload files with an Ajax form that is in a modal window
>>>>>>> (using a Panel, not a WebPage). The modal and its form are part of the
>>>>>>> main form:
>>>>>>>
>>>>>>> main-page.html
>>>>>>> <form wicket:id="form">
>>>>>>>  <div wicket:id="modal" />
>>>>>>>  <input type="submit" wicket:id="submit" />
>>>>>>> </form>
>>>>>>>
>>>>>>> upload-window.html
>>>>>>> <form wicket:id="form">
>>>>>>>  <input type="file" wicket:id="file" />
>>>>>>>  <input type="submit" wicket:id="submit" />
>>>>>>> </form>
>>>>>>>
>>>>>>>
>>>>>>> I'm able to upload a file but once the modal is closed, when I submit
>>>>>>> the main form (not the one for uploading), I get an exception:
>>>>>>>
>>>>>>> java.lang.IllegalStateException: ServletRequest does not contain
>>>>>>> multipart content. One possible solution is to explicitly call
>>>>>>> Form.setMultipart(true), Wicket tries its best to auto-detect
>>>>>>> multipart forms but there are certain situation where it cannot.
>>>>>>>     at 
>>>>>>> org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest.<init>(MultipartServletWebRequest.java:113)
>>>>>>>     at 
>>>>>>> org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest.<init>(MultipartServletWebRequest.java:83)
>>>>>>>     at 
>>>>>>> org.apache.wicket.protocol.http.servlet.ServletWebRequest.newMultipartWebRequest(ServletWebRequest.java:489)
>>>>>>>     at 
>>>>>>> org.apache.wicket.markup.html.form.Form.handleMultiPart(Form.java:1708)
>>>>>>>     at 
>>>>>>> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:886)
>>>>>>>     at 
>>>>>>> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:135)
>>>>>>>     at 
>>>>>>> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:177)
>>>>>>>     at 
>>>>>>> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:300)
>>>>>>>     at 
>>>>>>> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:142)
>>>>>>>     at 
>>>>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
>>>>>>>     at 
>>>>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
>>>>>>>     at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
>>>>>>>     at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436)
>>>>>>>     at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
>>>>>>>     at 
>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)
>>>>>>>     at 
>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:319)
>>>>>>>
>>>>>>>
>>>>>>> I've created a JIRA issue with code example
>>>>>>> (https://issues.apache.org/jira/browse/WICKET-3236) but maybe I
>>>>>>> misunderstood something here...
>>>>>>> Any help would be appreciated ;-)
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> Cedric
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

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

Reply via email to