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>&nbsp;&nbsp;&nbsp;#<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">[&uarr;]</a>
>        <a href="#" wicket:id="moveDownLink">[&darr;]</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

Reply via email to