如何将数据与JSF中的复选框列表绑定?

时间:2011-04-05 08:28:42

标签: jsf binding checkbox

我的编辑用户界面中有以下代码

<h:selectManyCheckbox id="selectedGroups" value="#{usersController.selectedGroups}">
                <f:selectItems value="#{usersController.groupsList}" var="item" itemLabel="#{item.groupname}" itemValue="#{item.groupid}" />
            </h:selectManyCheckbox>

我的用户组列表中包含所有组,并且我选择了包含为用户启用的组的组列表。但是,在编辑屏幕上,默认情况下它们未显示。我错过了什么?这不是绑定所选复选框的正确方法吗?

2 个答案:

答案 0 :(得分:1)

仅当groupsList方法已为equals()中的至少一个项目返回true时,才会预选selectedGroups的项目值。

假设groupidLong,则selectedGroups应返回包含要预选的值的List<Long>

答案 1 :(得分:0)

以下代码适用于请求范围bean ...

xhml代码......

 <h:selectManyCheckbox binding="#{Page1.chk_1}">
        <f:selectItem binding="#{Page1.chk_1_options}"/>
 </h:selectManyCheckbox>

Java代码....

HtmlSelectManyCheckbox chk_1 = new HtmlSelectManyCheckbox();
UISelectItems chk_1_options = new UISelectItems();

public HtmlSelectManyCheckbox getChk_1() {
    return chk_1;
}

public void setChk_1(HtmlSelectManyCheckbox chk_1) {
    this.chk_1 = chk_1;
}

public UISelectItems getChk_1_options() {
    if (chk_1_options.getValue() == null) {
        List<SelectItem> lst_chk_options = new ArrayList<SelectItem>();
        lst_chk_options.add(new SelectItem(1, "Label1"));
        lst_chk_options.add(new SelectItem(2, "Label2"));
        chk_1_options.setValue(lst_chk_options);
    }
    return chk_1_options;
}

public void setChk_1_options(UISelectItems chk_1_options) {
    this.chk_1_options = chk_1_options;
}

如果你想要会话范围然后回复,因为会话范围中的绑定元素在某些情况下会出现问题......