使用Ajax填充Wicket DropDownChoice

时间:2014-07-07 20:35:01

标签: java javascript ajax wicket

我在Wicket中有一个带有几个DropDownChoice组件的表单。对于其中一个DropDownChoice组件,我想首先禁用它,然后启用它并使用Java函数的输出填充它,该函数将另一个DropDownChoice组件的值作为输入。我如何使用Ajax做到这一点?

2 个答案:

答案 0 :(得分:1)

看看org.apache.wicket.examples.ajax.builtin.ChoicePage,它完全符合您的需求。

答案 1 :(得分:0)

首先,要对下拉选项进行调整,您需要添加AjaxaFormComponentUpdatingBehaviour("onchange")

然后,如果您需要填充一个下拉列表的选项列表,在其他下拉列表的选择更改中,则需要使用AjaxFormComponentUpdatingBehaviour("onchange") {}方法编写它。

在方法内部,您需要构建列表并通过setChoices(list)将其添加到另一个下拉列表中; 由于所有这些都是在ajax中完成的,因此您需要通过target.addComponent(doprdown2);

将下拉列表添加到ajax目标中

由于组件将在ajax中运行,因此您需要执行以下第二次下拉

dropdown2.setOutputMarkupPlaceholderTag(true);

完整示例:

DropdownChoice ddc1 = new ("id1", model1, list1);
DropdownChoice ddc2 = new ("id2", model2, list2);
ddc2.setOutputMarkupPlaceholderTag(tag);

ddc1.add(new AjaxFormComponentUpdatingBehaviour("onchange"){
    protected void onUpdate(AjaxRequestTarget target) {
    // Build the list2
    ddc2.setChoices(list2);

    target.addComponent(ddc2);
}
});