Wojtek,

using nested forms, there's always exactly one form tag.
submitting a nested form results in submitting the entire form,
but only processing (converting, validating, updating models)
the nested form on the server side.

bringing in a fileupload field basically takes away the ability to
submit the form via ajax.
having said that, an AjaxFormComponentUpdatingBehavior should still work.

cheers,
  Gerolf


On Thu, Mar 6, 2008 at 2:19 PM, Wojciech Biela <[EMAIL PROTECTED]> wrote:

> Hello Maurice,
>
> We just (almost) implemented this component (as I wrote in response to
> Erik's post), but we're are now struggling with not processing the
> form and retaining user input
>
> other than that I have the same wondering, if I submit only the inner
> form, will the browser send the whole form, or will the AjaxSubmitLink
> only submit the part I'm interested in? It's quite important because I
> will have fileiupload fields in the the outer form, so then adding an
> item to this listview (and sending this little form) will cause the
> browser to send the whole form with heavy files ... that would be
> absurd
>
> how does it work in wicket 1.3.1? or do I have to get a sniffer to be
> sure?
>
> regards
> Wojtek
>
> 2008/3/5, Maurice Marrink <[EMAIL PROTECTED]>:
> > Actually AjaxFormComponentUpdatingBehavior accomplishes the desired
> >  behavior without submitting the entire form. I can see the tricky part
> >  in loosing changes to the text in the textfields if you replace the
> >  div surrounding them but i thought nested forms in wicket 1.3.? solved
> >  this by only submitting the child formcomponents, or am i mistaken?
> >
> >
> >  Maurice
> >
> >
> >  On Wed, Mar 5, 2008 at 4:50 PM, Erik van Oosten <[EMAIL PROTECTED]>
> wrote:
> >  > Hi Wojciech,
> >  >
> >  >  You should use Buttons instead of links. Button (or
> AjaxFallbackButton)
> >  >  does submit the form. The only thing you need to do is disable
> >  >  validation on the button (call button.setDefaultFormProcessing
> (false)),
> >  >  otherwise the onSubmit of the button is not called when some field
> in
> >  >  the form does not validate. You can optionally call form.validate()
> in
> >  >  the onSubmit of the button so that validation messages do not
> disappear.
> >  >
> >  >  OT: personally, in forms I prefer RefreshingView instead of
> ListView.
> >  >
> >  >  Regards,
> >  >     Erik.
> >  >
> >  >  --
> >  >  Erik van Oosten
> >  >  http://www.day-to-day-stuff.blogspot.com/
> >  >
> >  >
> >  >
> >  >
> >  >  Wojciech Biela wrote:
> >  >  > Hello
> >  >  >
> >  >  > This time my question is not so general.
> >  >  >
> >  >  > We have a big form, part of this form there is a component which
> >  >  > should be a dynamic list of fields like this:
> >  >  >
> >  >  > |TextField| - remove
> >  >  > |TextField| - remove
> >  >  > |TextField| - remove
> >  >  > |TextField| - add
> >  >  >
> >  >  > if you click "add" another row "|TextField| - remove" should
> appear at
> >  >  > the bottom, it you should click "remove" then this row should be
> >  >  > removed
> >  >  >
> >  >  > problem we have is that the "add" and "remove" link does not send
> the
> >  >  > form, it only sends and ajax request to add an element to the list
> of
> >  >  > components and it operates (target) on a DIV that wraps the whole
> >  >  > list, so afterwards it renders the list again loosing values that
> were
> >  >  > already put in
> >  >  >
> >  >  > what is the preferred method to do such a thing? should the add
> and
> >  >  > remove link be a submit link with defaultFormProcessing set to
> false?
> >  >  > or maybe should we try to save values to model objects onchange in
> the
> >  >  > respective fields themselves
> >  >  >
> >  >  > isn't there a way to do it in a neat fashion?
> >  >  >
> >  >  > code responsible for the list component is
> >  >  >
> >  >  >     wrapper = new WebMarkupContainer("attributes-wrapper");
> >  >  >     listView = new ListView("attributes", attributeValuesList) {
> >  >  >       public void populateItem(final ListItem listItem) {
> >  >  >         final AttributeValue attributeValue = (AttributeValue)
> >  >  > listItem.getModelObject();
> >  >  >         Renderer inputRenderer =
> >  >  > attributeValue.getAttribute().getInputRenderer();
> >  >  >         Component component = inputRenderer.getComponent
> (attributeValue);
> >  >  >         listItem.add(component);
> >  >  >         AjaxLink addLink = new AddLink("add-link");
> >  >  >         AjaxLink removeLink = new RemoveLink("remove-link",
> listItem);
> >  >  >         if (listItem.getIndex() < (listView.getViewSize() - 1)) {
> >  >  >           addLink.setVisible(false);
> >  >  >         } else {
> >  >  >           removeLink.setVisible(false);
> >  >  >         }
> >  >  >         listItem.add(addLink);
> >  >  >         listItem.add(removeLink);
> >  >  >       }
> >  >  >     };
> >  >  >     wrapper.setOutputMarkupId(true);
> >  >  >
> >  >  > HTML is
> >  >  >
> >  >  >       <div wicket:id="attributes-wrapper"
> class="composit-wrapper">
> >  >  >               <div wicket:id="attributes" class="composit">
> >  >  >                       <div wicket:id="attributeAndValue"
> class="composit-item"></div>
> >  >  >                       <div class="composit-links">
> >  >  >                       <a wicket:id="add-link">+ add</a>
> >  >  >                       <a wicket:id="remove-link">- remove</a>
> >  >  >                       </div>
> >  >  >               </div>
> >  >  >       </div>
> >  >  >
> >  >  >
> >  >
> >  >
> >  >
> >  >
> >  > ---------------------------------------------------------------------
> >  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
> >  >  For additional commands, e-mail: [EMAIL PROTECTED]
> >  >
> >  >
> >
> >  ---------------------------------------------------------------------
> >  To unsubscribe, e-mail: [EMAIL PROTECTED]
> >  For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to