2009-10-28 92 views
2

我很難與selectManyCheckbox。 基本上我正在做的是在selectManyCheckbox類型控制器中加載類別列表(已通過List或帶有convertEntity的列表完成此操作)。我的問題是與選定的元素(值=「#{cardListProvider.categoriesHolder.selectedCategories}」)。經過一番閱讀後,我明白它也必須是一個List,但是什麼樣的?我怎樣才能設置選定的類別?我並沒有將它們保存在數據庫中,但我需要在它們的bean中執行一些操作!JSF selectManyCheckbox

這裏是我:這個

<h:selectManyCheckbox id="supportCategoryCardFilter" 
value="#{cardListProvider.categoriesHolder.selectedCategories}" styleClass="greyText" required="false" > 

      <s:selectItems var="filterList" value="#{cardListProvider.categoriesList}" label="#{filterList.label}" /> 

      <a:support id="supportCategoryCardFilter2" event="onchange" 
reRender="someHolder, categoriesPanel" eventsQueue="onchange" action="#{cardListProvider.findCards(cardListProvider.categoriesHolder.selectedCategories)}" /> 

    </h:selectManyCheckbox> 

我已經浪費了幾個小時......誰能幫助我? 謝謝

回答

4

您可以綁定到一個String[]陣列像這樣:

public class CheckSelector { 
    private String[] chosen; 

    public String[] getChosen() { return chosen; } 
    public void setChosen(String[] chosen) { this.chosen = chosen; } 

    public SelectItem[] getChoices() { 
    return new SelectItem[] { new SelectItem("1"), new SelectItem("2"), 
     new SelectItem("3") }; 
    } 
} 

selectManyCheckbox的值應綁定到chosen。或者,你可以使用一個List

public class CheckSelector { 
    private List<String> chosen; 

    public List<String> getChosen() { return chosen; } 

    public void setChosen(List<String> chosen) { this.chosen = chosen; } 

    public List<SelectItem> getChoices() { 
    return Arrays.asList(new SelectItem("1"), new SelectItem("2"), 
     new SelectItem("3")); 
    } 
} 

爲價值支撐的確切規則在javadoc列出:

  • 如果組件有一個附加Converter,使用它。
  • 如果不是,請查找ValueExpression的值(如果有)。 ValueExpression必須指向的東西是:
    • 基元數組(例如int[])。查找註冊類Converter這個原始類型。
    • 一組對象(例如Integer[]String[])。查找已註冊的Converter類別的底層元素類型。
    • A java.util.List。假設元素類型爲java.lang.String,所以不需要轉換。
  • 如果由於某種原因無法找到Converter,請假定該類型爲String數組。
+0

謝謝您的幫助! 你所建議的二傳手和吸氣機與我所做的相似。我試過它作爲列表,並嘗試其他類型,但由於某種原因,當我調試它時,列表總是空......不知道這一個.. – GuilhermeA

+0

你添加了一個'控制視圖,看看是否有任何控件失敗轉換/驗證? – McDowell

+0

我得到它的工作。老實說,我不知道確切的問題是什麼!感謝您的幫助!請再提一個問題:「選擇」是列表;是否可以使用列表(可能與轉換器)?我認爲這會更好,因爲作爲一個列表,我得到列表中選定類別的ID,然後必須執行操作才能獲得真正的類別。再一次感謝你。 – GuilhermeA

相關問題