2011-08-30 43 views

回答

1

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

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

是的,我想通了。问题是我想执行必需验证并在检查其中任何一项时呈现各种事物。这会导致一些丑陋的代码(#{这个或那个或其他})。不过谢谢! –

+0

我只是包装/映射他们,如果视图强制要求。 – BalusC

+0

是的,我试图做一些智能映射,但我不确定如何去做。尝试使用列表,但没有奏效。任何其他想法? –

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)); 
} 

当你保存你的实体时,只需遍历所选择的检查,并根据checkMap设置你的布尔值:

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