Hi! You can solve this in a robust manner using reusemanager:
http://osdir.com/ml/users-wicket.apache.org/2010-08/msg00161.html 2010/8/14 Sebastian <nospam...@gmx.net>: > Hi, > > I am trying to use a list view component on a page where rows with text > fields can be added, removed or moved around. I am using the removeLink, > moveUpLink and moveDownLink methods of the listview to create the respective > links for each list item. > The problem is that even when I enable the reuseListItems option, on using > any of these links the text fields "forget" the recently entered data (raw > input) and revert to the values of the backing model. > > This issue does not occur when I am adding rows the list view. > > Below is an example. I can add rows using the "Add Row" button. When I enter > text into the text fields, when I use the links next to a row, the content > of any text field is cleared. > > Any suggestions? > > Regards, > > Seb > > /******************** PAGE ********************************/ > import java.util.*; > import org.apache.wicket.PageParameters; > import org.apache.wicket.markup.html.WebPage; > import org.apache.wicket.markup.html.basic.Label; > import org.apache.wicket.markup.html.form.*; > import org.apache.wicket.markup.html.list.*; > import org.apache.wicket.model.*; > > public class ListViewPage extends WebPage { > public static class Row { > public String key; > public String value; > } > > private final List<Row> rows = new ArrayList<Row>(); > > public ListViewPage(final PageParameters parameters) { > > add(new Form<List<Row>>("rowsForm"). > > add(new Button("addRowButton") { > public void onSubmit() { rows.add(new Row()); } > }.setDefaultFormProcessing(false)). > > add(new ListView<Row>("rowsList", new PropertyModel<List<Row>>(this, > "rows")) { > protected void populateItem(final ListItem<Row> item) { > final Row row = item.getModelObject(); > > item.add(new Label("index", new AbstractReadOnlyModel<Integer>() { > public Integer getObject() { return item.getIndex() + 1; } > })); > > item.add(new RequiredTextField<String>("key", new > PropertyModel<String>(row, "key"))); > > item.add(new TextField<String>("value", new > PropertyModel<String>(row, "value"))); > > item.add(removeLink("removeRowLink", item)); > item.add(moveUpLink("moveUpLink", item)); > item.add(moveDownLink("moveDownLink", item)); > } > }.setReuseItems(true))); > } > } > > /******************** HTML ********************************/ > <html> > <head><title>ListView Test</title></head> > <body> > <form wicket:id="rowsForm"> > <button wicket:id="addRowButton">Add Row</button> > <table><tr wicket:id="rowsList"> > <td> #<span wicket:id="index">1</span></td> > <td>Key: <input type="text" wicket:id="key" /></td> > <td>Value: <input type="text" wicket:id="value" /></td> > <td> > <a href="#" wicket:id="moveUpLink">[↑]</a> > <a href="#" wicket:id="moveDownLink">[↓]</a> > <a href="#" wicket:id="removeRowLink">[X]</a> > </td> > </tr></table> > <input type="submit" value="Submit" /> > </form> > </body> > </html> > > > --------------------------------------------------------------------- > 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