p:booleanCheckBox将值保存到map

时间:2016-04-06 07:14:34

标签: primefaces

我试图将booleanSelectBoxes的值保存到地图中。

在我的豆子里我有这张地图(肯定有getter + setter):

private Map<String, Boolean> selectedPermissions;

默认情况下,我在我的bean中填充地图,它看起来像这样:

{0;0=false, 0;1=false, 0;2=false, 1;0=false, 1;1=false, 1;2=false}

我的观点:

<ui:repeat var="document" value="#{group.documents.entrySet().toArray()}"> 
    <ui:repeat var="right" value="#{group.rights.entrySet().toArray()}"> 
        <p:selectBooleanCheckbox value="
         #{GroupBean.selectedPermissions[#{right.value};#{document.value}]}" />
    </ui:repeat>
 </ui:repeat>

right和document都是树图,String为String,String为value。

我的问题是booleanCheckBox的值。我找不到一种方法来将权利和文档的价值与分号结合起来。我总是得到一个NumberFormatException。

根据这篇文章,使用地图作为值不应该成为问题:How to map the value of a h:selectBooleanCheckbox in a h:dataTable within a h:dataTable?

但是,找到关联键并在selectedPermissions地图中设置其值时,checkboxValue的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

发现问题。你需要在视图中用concat链接字符串,所以这个工作:

<ui:repeat var="document" value="#{group.documents.entrySet().toArray()}"> 
    <ui:repeat var="right" value="#{group.rights.entrySet().toArray()}"> 
        <p:selectBooleanCheckbox value="
         #{GroupBean.selectedPermissions[(right.value).concat(';').concat(document.value)]}" />
    </ui:repeat>
 </ui:repeat>