Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 p:selectBooleanButton不呈现预选值_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 p:selectBooleanButton不呈现预选值

Jsf 2 p:selectBooleanButton不呈现预选值,jsf-2,primefaces,Jsf 2,Primefaces,我已经阅读/尝试了几个小时的例子,但我无法让它起作用。我正在使用PrimeFaces4.0 我只需要一种方法来选择/取消选择并将这些值分配给地图 xhtml看起来像这样 <p:selectBooleanButton value="#{presupuestoBean.itemsCambiar[itemPresupuesto.id]}" onLabel="Yes" offLabel="No" onIcon="ui-icon-check" offIcon="ui-icon-close">

我已经阅读/尝试了几个小时的例子,但我无法让它起作用。我正在使用PrimeFaces4.0

我只需要一种方法来选择/取消选择并将这些值分配给地图

xhtml看起来像这样

<p:selectBooleanButton value="#{presupuestoBean.itemsCambiar[itemPresupuesto.id]}"
onLabel="Yes" offLabel="No" onIcon="ui-icon-check" offIcon="ui-icon-close">
     <p:ajax listener="#{presupuestoBean.updateItemPresupuestoAsignado(itemPresupuesto.id,0)}"/>
</p:selectBooleanButton>
赋值

if (itemPresupuestoAsignado.isCambiar()) {
            itemsCambiar.put(itemPresupuestoAsignado.getId(), Boolean.TRUE);

        }

我的预期行为是,当itemsCambiar有某个项为“TRUE”时,应该显示onIcon。但这并没有发生,所有p:selectBooleanButton都显示为offIcon

在调试时,我注意到一些事情

在Init处指定的布尔值已正确指定。 如果我更改outputLabel的SelectBoolean按钮,是否显示正确的'true' 当我更改selectBooleanButton并触发事件时,我可以看到HashMap中的“true”值不是java.lang.Boolean,而是java.lang.String附件 所以,这个问题可能与cast问题有关,但我把Boolean.TRUE放在映射中,所以。。。 有什么想法吗


最后,我修复了将ui:repeat更改为h:datatable的问题,我不知道这是为什么

我还提出了另一个问题,希望得到一些帮助


谢谢,

@BalusC我没有跟踪你,可能是因为酒店的名字。map属性是'itemsCambiar',它是一个hashmap。ItemPrespuesto没有布尔属性'cambiar'@BalusC,我已经解决了这个问题。然而,我对这个解决方案不太满意,我注意到您是JSF方面的专家,请检查我自己的答案链接。谢谢
if (itemPresupuestoAsignado.isCambiar()) {
            itemsCambiar.put(itemPresupuestoAsignado.getId(), Boolean.TRUE);

        }
public Map<Long, Boolean> getItemsCambiar() {
        return itemsCambiar;
    }