Wicket 6 AjaxFormComponentUpdateingBehavior事件处理ListView的第一行,但不处理后续行

Wicket 6 AjaxFormComponentUpdateingBehavior事件处理ListView的第一行,但不处理后续行,ajax,wicket,Ajax,Wicket,我正在尝试在可以显示模式窗口的listView中处理DropDownChoice onchange事件。对于第一个元素,它似乎工作得很好,但对于随后添加的元素,它却不起作用 final ModalWindow modal = new ModalWindow("modal"); modal.setOutputMarkupId(true); form.add(modal); final ListView<CommandeFournisseurDetails> myView = new

我正在尝试在可以显示模式窗口的listView中处理DropDownChoice onchange事件。对于第一个元素,它似乎工作得很好,但对于随后添加的元素,它却不起作用

final ModalWindow modal = new ModalWindow("modal");
modal.setOutputMarkupId(true);
form.add(modal);

final ListView<CommandeFournisseurDetails> myView = new     ListView<CommandeFournisseurDetails>(
            "rowsList",
            new PropertyModel<List<CommandeFournisseurDetails>>(this,
                    "rows")) {
        @Override
        protected void populateItem(
                final ListItem<CommandeFournisseurDetails> item) {

            final CommandeCollectionJDBC myCollection = new CommandeCollectionJDBC();
            CommandeFournisseurDetails row = item.getModelObject();

            item.add(new Label("index",
                    new AbstractReadOnlyModel<Integer>() {
                        @Override
                        public Integer getObject() {
                            return item.getIndex() + 1;
                        }
                    }));

                    final DropDownChoice<String> ID_PRODUIT = new DropDownChoice(
                    "ID_PRODUIT", new PropertyModel<String>(row,
                            "ID_PRODUIT"), myCollection.getProduit());
            ID_PRODUIT.setOutputMarkupId(true);
            ID_PRODUIT.setMarkupId("ID_PRODUIT");
            ID_PRODUIT.setLabel(Model.of("Produit"));
            ID_PRODUIT.setRequired(true);

            AjaxFormComponentUpdatingBehavior behavior = new AjaxFormComponentUpdatingBehavior(
                    "onChange") {
                protected void onUpdate(AjaxRequestTarget target) {
                    if (!ID_PRODUIT.getDefaultModelObjectAsString()
                            .isEmpty()) {
                        final PageParameters params = new PageParameters();
                        params.set("message",
                                ID_PRODUIT.getDefaultModelObjectAsString());
                        params.set("type", "Produit");

                        modal.setPageCreator(new ModalWindow.PageCreator() {
                            public Page createPage() {
                                // Use this constructor to pass a reference
                                // of this page.
                                return new ModalContentPage(modal, params);
                            }
                        });

                        modal.show(target);

                        target.add(modal);

                        target.add(ID_PRODUIT);
                    }

                }

                protected void onError(AjaxRequestTarget target,
                        RuntimeException e) {
                    System.out.println(e.toString());
                }

            };
            ID_PRODUIT.add(behavior);

                            AbstractSubmitLink remove = new SubmitLink("removeRowLink") {
                @Override
                public void onSubmit() {
                    getList().remove(item.getModelObject());
                    getParent().getParent().removeAll();

                };
            }.setDefaultFormProcessing(false);

            item.add(remove);

        }
    }.setReuseItems(true);

    form.add(new SubmitLink("addRowLink") {
        @Override
        public void onSubmit() {
            rows.add(new CommandeFournisseurDetails());
        }
    }.setDefaultFormProcessing(false));

    myView.setOutputMarkupId(true);

    form.add(myView);
最终模态窗口模态=新模态窗口(“模态”);
modal.setOutputMarkupId(true);
表格.加入(模态);
最终ListView myView=新建ListView(
“rowsList”,
新PropertyModel(此,
“行”)){
@凌驾
受保护的void populateItem(
最终清单(项目){
final CommandeCollectionJDBC myCollection=new CommandeCollectionJDBC();
CommandeFornissEurDetails行=项。getModelObject();
添加(新标签(“索引”),
新的AbstractReadOnlyModel(){
@凌驾
公共整数getObject(){
return item.getIndex()+1;
}
}));
最终下拉选项ID_PRODUIT=新的下拉选项(
“ID_PRODUIT”,新PropertyModel(世界其他地区),
“ID_PRODUIT”),myCollection.getProduit();
ID_PRODUIT.setOutputMarkupId(真);
ID_PRODUIT.setMarkupId(“ID_PRODUIT”);
ID_PRODUIT.setLabel(型号为(“PRODUIT”));
ID_PRODUIT.setRequired(true);
AjaxFormComponentUpdateingBehavior=新的AjaxFormComponentUpdateingBehavior(
“一次变更”){
受保护的void onUpdate(AjaxRequestTarget目标){
如果(!ID_PRODUIT.getDefaultModelObjectAsString())
.isEmpty()){
final PageParameters params=新的PageParameters();
参数集(“消息”,
ID_PRODUIT.getDefaultModelObjectAsString());
参数集(“类型”、“产品”);
modal.setPageCreator(新的ModalWindow.PageCreator(){
公共页面createPage(){
//使用此构造函数传递引用
//本页的第页。
返回新的ModalContentPage(模式、参数);
}
});
模态显示(目标);
目标。添加(模态);
添加(ID\u PRODUIT);
}
}
受保护的void onError(AjaxRequestTarget目标,
运行时异常(e){
System.out.println(例如toString());
}
};
ID_PRODUIT.add(行为);
AbstractSubmitLink移除=新建SubmitLink(“移除链接”){
@凌驾
提交时公共无效(){
getList().remove(item.getModelObject());
getParent().getParent().removeAll();
};
}.setDefaultFormProcessing(false);
项目。添加(删除);
}
}.setReuseItems(真);
添加(新提交链接(“添加链接”){
@凌驾
提交时公共无效(){
添加(新命令fornisseurdetails());
}
}.setDefaultFormProcessing(false));
setOutputMarkupId(true);
表格.add(myView);
知道为什么其他元素不继承同一事件吗?
感谢您的帮助。

所有
ID-PRODUIT
dropdownchoices(第一个也是其余的)都有相同的markupId,这要感谢:

ID_PRODUIT.setMarkupId("ID_PRODUIT");
试着给他们一个独特的MarkupId。可能通过添加listitem的索引:

ID_PRODUIT.setMarkupId("ID_PRODUIT" + item.getIndex());

或者完全删除该行代码。

所有
ID-PRODUIT
dropdownchoices(第一个也是其余的)都具有相同的markupId,这要感谢:

ID_PRODUIT.setMarkupId("ID_PRODUIT");
试着给他们一个独特的MarkupId。可能通过添加listitem的索引:

ID_PRODUIT.setMarkupId("ID_PRODUIT" + item.getIndex());
或者完全删除这行代码