【问题标题】:p:selectBooleanButton doesn't render preselected valuep:selectBooleanButton 不呈现预选值
【发布时间】: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


【解决方案1】:

最后我修复了将 ui:repeat 更改为 h:datatable,(我不知道为什么有效)。

我创建了另一个问题以请求有关它的帮助ui:repeat vs h:datatable behavior

谢谢,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多