0

我正在创建一个带有定价服务列表的 ListView。每个定价服务都有一个不同条款的列表,这是一个 DropDownChoice。问题是当我在下拉列表中选择各种值时,术语的值不会更新。这是一个向导,因此我尝试在单击“下一步”之前使用正确的术语更新向导(向导对象有一个 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);
}
4

2 回答 2

1

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

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

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

于 2013-01-03T14:57:29.800 回答
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);
于 2013-01-07T11:39:00.530 回答