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

问题描述 投票:0回答:2

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

jsf
2个回答
1
投票

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

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

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() );
© www.soinside.com 2019 - 2024. All rights reserved.