I haven't looked at all of your code, but have you taken a look at http://wicketframework.org/apidocs/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.html or http://wicketframework.org/apidocs/wicket/ajax/form/AjaxFormSubmitBehavior.html
Maybe those will help you out. Jeremy Thomerson http://www.wickettraining.com On Mon, May 5, 2008 at 12:23 PM, Mathias P.W Nilsson <[EMAIL PROTECTED]> wrote: > > I've read this on the wicket wiki to add new component via ajax. > > http://cwiki.apache.org/WICKET/how-to-repaint-a-listview-via-ajax.html > http://cwiki.apache.org/WICKET/how-to-repaint-a-listview-via-ajax.html > > My problem is that if the user have added some values in the form and the > clicks the > ajax update link the form isn't preserved. How can I preserve the > following > form > > public class AttributePage extends BaseAdministrationPage { > > private se.edgesoft.hairless.entities.item.Item item; > List<SubItem> subItems = new LinkedList<SubItem>(); > List<Element> elements; > > public List<SubItem> getSubItems() { > return subItems; > } > > public AttributePage( se.edgesoft.hairless.entities.item.Item item > ){ > this.item = item; > elements = > getCategoryDao().getElements(getItem().getSubCategory() ); > final CSSFeedbackPanel panel = new CSSFeedbackPanel( > "feedback" ); > panel.setOutputMarkupId(true); > add( panel ); > > /** > final IModel subItemsModel = new LoadableDetachableModel(){ > private static final long serialVersionUID = 1L; > protected Object load(){ > > > return subItems; > } > }; > */ > > for( int i = 0; i < 10; i++ ){ > SubItem subItem = new SubItem(); > subItem.setItem(getItem()); > subItems.add( subItem ); > subItem.setSortOrder(i); > List<Attribute> attributes = new > LinkedList<Attribute>(); > for( Element element : getElements() ){ > Attribute attribute = new Attribute(); > attribute.setData( null ); > attribute.setElement( element ); > attribute.setSubItem(subItem); > attributes.add( attribute ); > subItem.setAttributes(attributes); > } > } > > final WebMarkupContainer itemContainer = new > WebMarkupContainer("itemContainer"); > itemContainer.setOutputMarkupId(true); > itemContainer.add(getItemListView()); > > final Form attributeForm = new Form( "attributeForm" ); > > > IndicatingAjaxButton ajaxBtn = new > IndicatingAjaxButton("create", > attributeForm ){ > > private static final long serialVersionUID = 1L; > > @Override > protected IAjaxCallDecorator getAjaxCallDecorator() > { > return new IAjaxCallDecorator() > { > private static final long > serialVersionUID = 1L; > public CharSequence > decorateScript(CharSequence script) > { > return > "document.getElementById('"+ getMarkupId() > +"').disabled=true;"+script; > } > public CharSequence > decorateOnFailureScript(CharSequence script) > { > return > script+"document.getElementById('"+ getMarkupId() > +"').disabled=false;"; > } > public CharSequence > decorateOnSuccessScript(CharSequence script) > { > return > script+"document.getElementById('"+ getMarkupId() > +"').disabled=false;"; > } > }; > } > > protected void onSubmit(AjaxRequestTarget target, > Form form){ > this.setEnabled(false); > target.addComponent(this); > target.addComponent(panel); > se.edgesoft.hairless.entities.item.Item > item = getItemDao().getItem( > getItem().getId() ); > Long cachedBalance = new Long( 0 ); > for( SubItem subItem : subItems ){ > cachedBalance += > subItem.getBalance(); > subItem.setItem( item ); > getItemDao().save( subItem ); > for( Attribute attribute : > subItem.getAttributes() ){ > > attribute.setSubItem(subItem); > > getItemDao().save(attribute); > } > } > item.setCachedBalance(cachedBalance); > getItemDao().save(item); > this.setEnabled( true ); > > } > > protected void onError(AjaxRequestTarget target, Form form) > { > target.addComponent(panel); > } > }; > ajaxBtn.setOutputMarkupId( true ); > > > attributeForm.add(itemContainer); > attributeForm.setOutputMarkupId( true ); > attributeForm.add( ajaxBtn ); > add( attributeForm ); > > > add(new AjaxLink( "newAttributeLink" ){ > private static final long serialVersionUID = 1L; > > @Override > public void onClick( AjaxRequestTarget target ) { > target.addComponent(attributeForm); > newAttribute(); > attributeForm.addOrReplace(itemContainer); > > } > > }); > > } > > private void newAttribute(){ > SubItem subItem = new SubItem(); > subItem.setItem(getItem()); > subItems.add( subItem ); > subItem.setSortOrder(getSubItems().size() + 1); > List<Attribute> attributes = new LinkedList<Attribute>(); > for( Element element : getElements() ){ > Attribute attribute = new Attribute(); > attribute.setData( null ); > attribute.setElement( element ); > attribute.setSubItem(subItem); > attributes.add( attribute ); > subItem.setAttributes(attributes); > } > } > > private ListView getItemListView(){ > return new ListView("subItems", getSubItems() ){ > > private static final long serialVersionUID = 1L; > > @Override > protected void populateItem(ListItem listItem ) { > > final SubItem subItem = (SubItem) > listItem.getModelObject(); > TextField sortOrder = new > TextField("sortOrder", new PropertyModel( > subItem, "sortOrder" )); > sortOrder.setRequired( true ); > listItem.add( sortOrder ); > > TextField balance = new > TextField("balance", new PropertyModel( subItem, > "balance" )); > balance.setRequired( true ); > listItem.add(balance); > > listItem.add( new ListView( "attributes" , > subItem.getAttributes()){ > > private static final long > serialVersionUID = 1L; > > @Override > protected void > populateItem(ListItem attributeItem ) { > Attribute attribute = > (Attribute) attributeItem.getModelObject(); > > TextField attributeField = > new TextField( "attribute", new > PropertyModel(attribute, "data" ) ); > attributeField.add( > StringValidator.lengthBetween(1, 100)); > attributeField.setRequired( > true ); > attributeItem.add( > attributeField ); > } > > }); > } > > > > }; > } > > > public se.edgesoft.hairless.entities.item.Item getItem(){ > return item; > } > > public List<Element> getElements() { > return elements; > } > } > > -- > View this message in context: > http://www.nabble.com/Preserve-form-on-ajax-update-tp17066683p17066683.html > Sent from the Wicket - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
