Hi, Thanks for sharing your solution! IMO this is a special case that is not that common to be in Wicket core. It also assumes that Form#setOutputMarkupId(true) has been called.
What about marking the form as multipart from the beginning (Form.setMultipart(true)) ? I think it should work even i there are no FileUploadField fields in it. Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Mon, Sep 5, 2016 at 11:54 PM, Илья Нарыжный <phan...@ydn.ru> wrote: > Hello! > > Issue has been solved by the following code. What do you think about > inclusion of it into official wicket code? > > /** > * Update Form EncType to "multipart/form-data" of there is something which > require multipart is in target ajax response > */ > public class FixFormEncTypeListener extends > AjaxRequestTarget.AbstractListener { > > @Override > public void onAfterRespond(Map<String, Component> map, IJavaScriptResponse > response) { > Set<Form<?>> formsToUpdate = new HashSet<>(); > for (Map.Entry<String, Component> entry : map.entrySet()) { > Component component = entry.getValue(); > Form<?> form = component.findParent(Form.class); > if(form!=null && form.isMultiPart()) formsToUpdate.add(form. > getRootForm()); > } > for (Form<?> form : formsToUpdate) { > response.addJavaScript("{var e = > document.getElementById('"+form.getMarkupId()+"'); e.encoding= > 'multipart/form-data'; e.encType=e.encoding;}"); > } > } > } > > Thanks, > > Ilya > > --------------------------------------------- > Orienteer(http://orienteer.org) - open source Business Application > Platform > > > On Mon, Sep 5, 2016 at 2:32 AM, Илья Нарыжный <phan...@ydn.ru> wrote: > > > It will not solve the problem... Component which want to be mutatable > > doesn't want to know about parent forms. So forms in ajax mode should > > somehow adjust encoding automatically, but resending of whole content of > a > > form is not good option, imho. > > > > Thanks, > > > > Ilya > > > > --------------------------------------------- > > Orienteer(http://orienteer.org) - open source Business Application > > Platform > > > > > > On Mon, Sep 5, 2016 at 1:29 AM, Maxim Solodovnik <solomax...@gmail.com> > > wrote: > > > >> Maybe you can use nested forms? > >> > >> On Mon, Sep 5, 2016 at 2:51 PM, Илья Нарыжный <phan...@ydn.ru> wrote: > >> > >> > Hello! > >> > > >> > Please help to figure out is there some good solution for the > following > >> > situation: > >> > > >> > There is a page with Form with in it. Form contains lots of components > >> > underneath. And some components can be changed by AJAX from "view" > >> > representation to "edit". And sometimes "edit" is some file upload > >> > component. And in this case to work proporly: form encoding should be > >> > changed to multipart. But I don't want to make it by sending in ajax > >> > response whole Form, because it's pretty big... Is there a good way > >> update > >> > just a component and if parent form is not multipart - switch it to > >> > multipart? > >> > > >> > Thanks, > >> > > >> > Ilya > >> > > >> > --------------------------------------------- > >> > Orienteer(http://orienteer.org) - open source Business Application > >> > Platform > >> > > >> > >> > >> > >> -- > >> WBR > >> Maxim aka solomax > >> > > > > >