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