我创建了一个包含值的调色板,我创建了一个带有AjaxFormComponentUpdatingBehavior的DropDownChoice ddcdomaines来更新选择列表,但我不知道该怎么做,你能帮助我吗?
这是我的代码:
List<PartnerDomainDTO> domaines = partenaireHelper.allDomains();
ChoiceRenderer choiceRenderer = new ChoiceRenderer("label", "sid");
final Palette palette =
new Palette("partenaires", new PropertyModel(offre, "partenaires"), new Model(
(Serializable) partenairesPossibles), renderer, 10, false) {
private static final long serialVersionUID = 1178320215146881229L;
boolean first = true;
@Override
public Iterator getSelectedChoices() {
if (first) {
first = false;
return partenairesExistants.iterator();
}
return super.getSelectedChoices();
}
};
palette.setOutputMarkupId(true);
palette.setOutputMarkupPlaceholderTag(true);
DropDownChoice ddcdomaines = new DropDownChoice("domaines", new Model(domaines.get(0)), domaines, choiceRenderer);
ddcdomaines.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
remove(palette);
Palette palette1 =
new Palette(
"partenaires",
new PropertyModel(offre, "partenaires"),
new Model(new ArrayList<Partenaire>()),
renderer,
10,
false);
palette1.setOutputMarkupId(true);
palette1.setOutputMarkupPlaceholderTag(true);
add(palette1);
target.addComponent(palette);
target.addComponent(palette1);
}
});
add(palette);
add(ddcdomaines);
}
答案 0 :(得分:3)
以下是使用AjaxFormComponentUpdatingBehavior的DropDownChoice的一个很好的例子:
http://wicketstuff.org/wicket/ajax/choice
单击“源代码”链接以查看源代码。如果您需要更多信息,则需要在问题中提供更多详细信息。
更新:根据JavaDoc,有一种使用Ajax更新Palettes的特定方法:
确保在执行任何其他操作之前遵循这些说明。
在您的代码中,您试图删除一个Palette并放入另一个Palette。虽然这可能在长期内起作用,但它并不是非常Wicket-y。可悲的是,Palette没有公开的方法来改变选择。但是,如果您保留对choicesModel的引用,则可以修改该列表,并且Palette应该在重新呈现时看到更改。像这样:
final Model<List<String>> choicesModel = new Model<List<String>>(partenairesPossibles)
final Palette palette = new Palette("partenaires", new PropertyModel(offre, "partenaires"), choicesModel, renderer, 10, false) {...};
然后在你的Ajax onUpdate
中choicesModel.setObject(/* Insert your other list */);
target.addComponent(palette);
小心跟踪所选择的选项和可能的选择。我不确定如果这些不匹配会发生什么。希望有所帮助!