0

有料サービスのリストを含む ListView を作成しています。各有料サービスには、DropDownChoice であるさまざまな用語のリストがあります。問題は、ドロップダウン リストでさまざまな値を選択しても、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);
}
4

2 に答える 2

1

これは、AJAX コールバックを使用して行うことができます。Wicket Examples の「Drop Down Choice Example」を確認してください。

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 に答える