我的编辑用户界面中有以下代码
<h:selectManyCheckbox id="selectedGroups" value="#{usersController.selectedGroups}">
<f:selectItems value="#{usersController.groupsList}" var="item" itemLabel="#{item.groupname}" itemValue="#{item.groupid}" />
</h:selectManyCheckbox>
我的用户组列表中包含所有组,并且我选择了包含为用户启用的组的组列表。但是,在编辑屏幕上,默认情况下它们未显示。我错过了什么?这不是绑定所选复选框的正确方法吗?
答案 0 :(得分:1)
仅当groupsList
方法已为equals()
中的至少一个项目返回true
时,才会预选selectedGroups
的项目值。
假设groupid
是Long
,则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;
}
如果你想要会话范围然后回复,因为会话范围中的绑定元素在某些情况下会出现问题......