2010-11-21 9 views
1

私はドロップダウンリストイベントを連鎖しようとしています。Wicketのドロップダウンリストイベントをどのようにチェーン化できますか?

Iは、これらのデータを持っている:

名auidi(A4 {2006,2007,2008}、A6 {2006,2007,2009}、TT {2005,2008,2010}) フォード(クラウン{ 2009,2010}、エスケープ{2008,2009})

車の名前を選択すると、モデルが表示されます。後でモデルを選択し、年を表示したい。私はこの例を見つけた

http://wicketstuff.org/wicket14/nested/?wicket:bookmarkablePage=:org.apache.wicket.examples.ajax.builtin.ChoicePage

しかしそこに、2つのドロップダウンがあります。地図もあります。マップでマップを使用する必要がありますか?もしそうなら、私はどのようにモデルを設定できますか?

マップはタイプMap<String ,List<String >>であり、モデルは次のようである:マップがMap<String,Map<String ,List<String >>>

IModel<List<? extends String>> makeChoices = 
    new AbstractReadOnlyModel<List<? extends String>>() 
    { 
     @Override 
     public List<String> getObject() 
     { 
      Set<String> keys = modelsMap.keySet(); 
      List<String> list = new ArrayList<String>(keys); 
      return list; 
     } 
    }; 

何をしている場合は?

Iコード

IModel<Map? extends String>> makeChoices = new AbstractReadOnlyModel<Map<? extends String>>() 

私のIDEは、2つの引数を期待して、私がモデルにマップに値を代入する方法を知らないことを私に警告した場合。

答えて

2

3つのDropDownChoicesのケースでは、3つのモデルが必要であり、すべてが選択肢を提供するリストを表す必要があります。あなたの関係をシミュレートするためにネストされたマップが必要です。たとえば、次のようになります。

+0

2番目のモデル(modelChoices)では、 "models = Collections.emptyList()"の行に、互換性のない型の警告が表示されます。これはcollections.emptyMap()です。 – jacop41

+0

そして3番目のモデルでは、Netbeansは私に同じ行について警告しています。最後のDropDownChoiceについては、は新しいDropDownChoiceを作成します( "makes"、新しいPropertyModel (this、 "selectedMake")、makeChoices); – jacop41

+0

2番目と3番目のモデルの関数はreturn文が見つからないことを警告しています – jacop41

関連する問題