我试图将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的正确语法是什么?
答案 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>