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