Wicket Wizard下拉模型值不会更新

时间:2013-01-03 14:21:45

标签: java wicket

我正在创建一个带有价格服务列表的ListView。每个定价服务都有一个不同的术语列表,即DropDownChoice。问题是,当我在下拉列表中选择各种值时,Term don的值不会更新。这是一个向导,所以我尝试使用正确的Term更新向导,然后单击“next”(Wizard-object有一个具有Term对象的ProductOrder对象)。

谢谢, 泰耶

    public ServiceSelectionStep(final NewSubscriptionWizard wizard) {

    final ListView<PricedService> serviceChoiceList = new ListView<PricedService>(
            "serviceList", 
            wizard.getCompanyPriceModel().getPricedServices()) {

        protected void populateItem(ListItem<PricedService> item) {
            final PricedService service = item.getModel().getObject();
            // Adding labels to the list.
            addPricedServiceLabels(item, service);

            DropDownChoice<Term> termsDropDown = new DropDownChoice<Term>(
                    "term", 
                    new PropertyModel<Term>(wizard.getProductOrder(), "term"),
                    service.getTerms(), 
                    new ChoiceRenderer<Term>("description"));

            item.add(termsDropDown);
        }
    };
    add(serviceChoiceList);
}

2 个答案:

答案 0 :(得分:1)

您可以使用AJAX回调执行此操作。检查Wicket示例中的“下拉选择示例”。

http://www.wicket-library.com/wicket-examples/ajax/

This是重要的文件,它向您展示如何使用正确的模型执行此操作。

答案 1 :(得分:0)

尝试在AjaxFormComponentUpdatingBehavior中定位termsDropDown。

termsDropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {

            @Override
            protected void onUpdate(AjaxRequestTarget target) {

                wizard.getProductOrder().setService(service);
                System.out.println("Chosen term: " + wizard.getProductOrder().getTerm());

                target.addComponent(termsDropDown); 

            }
        });
        item.add(termsDropDown);