使用多个布尔值作为selectManyCheckbox的值

时间:2011-08-30 13:33:41

标签: jsf

我想通过使用h:selectManyCheckbox将一些布尔分组组合在一起。我不希望该值是ArrayList或Array,只是我的XX布尔字段。无论如何这可以实现吗?

2 个答案:

答案 0 :(得分:1)

不,你不能。只需为每个使用<h:selectBooleanCheckbox>

<h:selectBooleanCheckbox value="#{bean.boolean1}" />
<h:selectBooleanCheckbox value="#{bean.boolean2}" />
<h:selectBooleanCheckbox value="#{bean.boolean3}" />
...

答案 1 :(得分:0)

我知道问题是陈旧的,但万一有人(就像我一样)仍然在寻找答案

使用Java 8:

<h:selectManyCheckbox value="#{bean.checks}">
  <f:selectItem itemValue="value1" itemLabel="Label 1" />
  <f:selectItem itemValue="value2" itemLabel="Label 2" />
  <f:selectItem itemValue="value3" itemLabel="Label 3" />  
</h:selectManyCheckbox>

豆:

private List<String> checks;
private Map<String, Runnable> checksMap;

private void initMap() {
  checksMap = new HashMap<>();
  checksMap.put("value1",   () -> myentity.setBoolean1(true));
  checksMap.put("value2",   () -> myentity.setBoolean2(true));
  checksMap.put("valueN",   () -> myentity.setBooleanN(true));
}

当您保存实体时,只需迭代选择的检查,并根据checksMap设置您的布尔值:

checks.stream().forEach( (e) -> checksMap.get(e).run() );