wicket - Implementieren von Ajax Elemente hinzufügen/entfernen ListView

Im verrückt über dieses Thema. Implementiert habe ich eine ListView, die Sie hinzufügen können/entfernen TextField dinamically, sondern nur die letzten TextField entfernt.

Beispiel:

//Object type which is used in the list
public class ExampleObject implements Serializable{
    private String keyword;

    public String getKeyword() {
        return this.keyword;
    }

    public void setKeyword(String s) {
        keyword = s;
    }
}

//ListView
List<ExampleObject> keywordList = new ArrayList<ExampleObject>();
keywordList.add(new ExampleObject());

ListView keywordView = new ListView("keywordView", keywordList) {
    @Override
    protected void populateItem(final ListItem item) {
            ExampleObject model = (ExampleObject) item.getModelObject();
            item.add(new TextField("subKeyword", new PropertyModel(model, "keyword")));

            //keyword remove link
            AjaxSubmitLink removeKeyword = new AjaxSubmitLink("removeKeyword", myForm)         
            {
                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    ExampleObject selected = (ExampleObject) item.getModelObject();
                    //I also tried deleting by index. println shows the
                    //selected object is the element I want to remove, so why always
                    //remove last object of the list?
                    keywordList.remove(selected);
                    if (target != null) {
                        target.addComponent(myForm);
                    }
                }
            };

            item.add(removeKeyword);

            //keyword add link
            AjaxSubmitLink addKeyword = new AjaxSubmitLink("addKeyword", metadataForm)      
                {
                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    keywordList.add(new ExampleObject());
                    if (target != null) {
                        target.addComponent(myForm);
                    }
                }
            };
            item.add(addKeyword);
}
keywordView.setReuseItems(true);
metadataForm.add(keywordView);

Jede Hilfe wäre sehr dankbar, weil ich, was dieses Problem ist wirklich ein sehr blöder Fehler, aber ich cant get it!

Dank

InformationsquelleAutor jOki | 2010-08-18

Schreibe einen Kommentar