【发布时间】:2013-12-13 21:22:06
【问题描述】:
我已经阅读/尝试了几个小时的示例,但我无法让它发挥作用。我正在使用 Primefaces 4.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>
初始化方法(以防万一重置为False,然后分配真值)
for (ItemPresupuesto itemsPresupuestoDefault : itemsPresupuestoDefaults) {
itemsCambiar.put(itemsPresupuestoDefault.getId(),Boolean.FALSE);
}
分配 TRUE 值
if (itemPresupuestoAsignado.isCambiar()) {
itemsCambiar.put(itemPresupuestoAsignado.getId(), Boolean.TRUE);
}
和
public Map<Long, Boolean> getItemsCambiar() {
return itemsCambiar;
}
我的预期行为是当 itemsCambiar 有一些项目“TRUE”时,应该显示 onIcon。但它没有发生,所有 p:selectBooleanButton 都显示为 offIcon。
我在调试时注意到了几件事。
- 在初始化时分配的布尔值已正确分配。
- 如果我将 selectBooleanButton 更改为 outputLabel,则显示“true”(这是正确的)
- 当我更改 selectBooleanButton 并触发事件时,我可以看到 HashMap 中的“真”值不是 java.lang.Boolean 而是 java.lang.String(附件)
所以也许,这个问题与演员表问题有关,但我将 Boolean.TRUE 放在地图中,所以...... 有什么想法吗?
【问题讨论】:
-
@BalusC 我没有关注你可能是因为属性名称。 map 属性是 'itemsCambiar',它是一个
哈希图。 ItemPresupuesto 没有布尔属性“cambiar” -
@BalusC,我已经解决了这个问题。但是我对这个解决方案不太满意,而且我注意到您是 JSF 方面的专家,您能否查看我自己的答案链接。谢谢!
标签: jsf-2 primefaces