Wicket 6 AjaxFormComponentUpdateingBehavior事件处理ListView的第一行,但不处理后续行
我正在尝试在可以显示模式窗口的listView中处理DropDownChoice onchange事件。对于第一个元素,它似乎工作得很好,但对于随后添加的元素,它却不起作用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
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());
或者完全删除这行代码