我有一些我想通过使用h:selectManyCheckbox组合在一起的布尔值。我不希望该值是ArrayList或Array,只是我的XX布尔字段。无论如何这可以实现吗?
不,你不能。只需使用<h:selectBooleanCheckbox>
。
<h:selectBooleanCheckbox value="#{bean.boolean1}" />
<h:selectBooleanCheckbox value="#{bean.boolean2}" />
<h:selectBooleanCheckbox value="#{bean.boolean3}" />
...
我知道问题是陈旧的,但万一有人(就像我一样)仍然在寻找答案
使用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() );