2014-10-20 135 views
1

我試圖實現一個調色板。我嘗試設置一個默認選擇列表,但它是空的。Wicket:調色板設置默認選擇

myLists:

// here I get a Set of the categorys which are already in that group 
    Set<Category> selectedCategorysSet = new HashSet<Category>(); 
    selectedCategorysSet = group.getCategorys(); 

    // here I get all categorys exists 
    List<Category> listCategory = new ArrayList<Category>(); 
    listCategory = catDao.getAll(Category.class); 

    List<Category> selectedCats = new ArrayList<Category>(); 
    List<Category> tmpList = new ArrayList<Category>(); 

    // the palette doesnt accept an Set so I added the set to a List 
    selectedCats.addAll(selectedCategorysSet); 

    // here I delete every Category from the whole List which is already selected (stored in a temporary list) 
    for(Category catList:listCategory){ 
     for(Category cat:selectedCategorysSet){ 
      if(cat.getCategoryId() == catList.getCategoryId()){ 
       tmpList.add(catList); 
      } 
     } 
    } 

    listCategory.removeAll(tmpList); 

    /* 
     two multiple select boxes which switches items between each other 
    */ 
    IChoiceRenderer<Category> renderer = new ChoiceRenderer<Category>("title","categoryId"); 

    final Palette<Category> palette = new Palette<Category>("palette", 
      new ListModel<Category>(selectedCats), 
      new CollectionModel<Category>(listCategory), 
      renderer, 10, false); 

我已經調試代碼,它的工作原理,但我選擇的值是空的。

這裏是我的調試變量的照片:debugged

,但所選擇的領域仍然是空的!

enter image description here

我究竟做錯了什麼?

回答

3

您不應該刪除every Category from the whole List which is already selected

調色板組件必須在您的代碼中存儲choicesModel中的整個值列表listCategory

所以,僅僅從實現刪除下面的代碼:

for(Category catList:listCategory){ 
    for(Category cat:selectedCategorysSet){ 
     if(cat.getCategoryId() == catList.getCategoryId()){ 
      tmpList.add(catList); 
     } 
    } 
} 

listCategory.removeAll(tmpList); 
+0

AHW,確定了它。我認爲總體錯誤。謝謝!我沒有進入模型..我可以問你一些基於這個問題的問題嗎? – monti 2014-10-20 09:19:01

+0

@monti,當然可以。我認爲這更多的是關於'Palette'模型的用法,而不是模型本身。您總是應該查看框架的源代碼以獲得更好的理解。 – 2014-10-20 09:23:20

+0

非常感謝!我將所有選定的'categorys'存儲到一個名爲'group'的對象。我得到了一個小組,我只列出了每個我得到的「小組」。它工作正常,直到我將多個類別保存到一個組中。它顯示了與我存儲的分類大小相同的組。 我的列表圖片:[鏈接](http://i.imgur.com/c8CCudj.png) 在我的面板中,我得到我的數據庫的值是這樣的:'List groupList = new ArrayList () ; groupList = groupDao.getAll(Group.class);' 我的DB裏面只有一個條目 – monti 2014-10-20 09:30:30