Jsf 2 p:selectBooleanButton不呈现预选值
我已经阅读/尝试了几个小时的例子,但我无法让它起作用。我正在使用PrimeFaces4.0 我只需要一种方法来选择/取消选择并将这些值分配给地图 xhtml看起来像这样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">
<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;
}