4

最初の doprdownchoice の最初の選択が 2 番目のすべてのオプションを変更するように、Wicket に2 つのドロップダウン選択を行うものはありますか?

4

2 に答える 2

5

最初の選択肢の値を使用して、2 番目の選択肢の値を決定する必要があります。

この例ではAjaxFormComponentUpdatingBehavior、Ajax の更新をトリガーして値の変更を実行する を使用することにしました。DropDownChoice最初の例で選択された国の連邦州を2 番目の例に入力する簡単な例を示しています。

この例では wicket 1.4 を使用していますが、新しいバージョンでもあまり変わらないはずです。

   // two countries
   final String aut = "AUT";
   final String ger = "GER";

   // their states
   final List<String> autStates = Arrays.asList(new String[] { "V", "T", "S", "W" });
   final List<String> gerStates = Arrays.asList(new String[] { "NRW", "B", "BW" });

   // mapping, you should really get this data from a service or have a constant
   final Map<String, List<String>> countryToState = new HashMap<String, List<String>>(2);
   countryToState.put(aut, autStates);
   countryToState.put(ger, gerStates);

   // the container to send back via ajax
   final WebMarkupContainer cont = new WebMarkupContainer("cont");
   cont.setOutputMarkupId(true);
   add(cont);

   final Model<String> stateModel = new Model<String>();
   final DropDownChoice<String> countries = new DropDownChoice<String>("countries", new Model<String>(), new ArrayList<String>(countryToState.keySet()));
   final DropDownChoice<String> states = new DropDownChoice<String>("states", stateModel, new LoadableDetachableModel<List<String>>() {

        @Override
        protected List<String> load() {
            final String country = countries.getModelObject();
            final List<String> list = countryToState.get(country);

            return list != null ? list : new ArrayList<String>(0);
        }
   });

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

    @Override
    protected void onUpdate(AjaxRequestTarget target) {         
                    // just add the container to see the results
        target.addComponent(cont);
    }

   });

   cont.add(countries);
   cont.add(states);
于 2014-04-29T12:28:49.690 に答える
0

1番目は2 番目のベースをDropDownChoice更新し、 2 番目の DDC を に追加する必要があります。ModelDropDownChoiceAjaxRequestTarget

このコンストラクターはモデルを受け入れ、モデルへの参照を保存して変更できるようにすることができます。

于 2014-04-29T00:25:20.407 に答える