【问题标题】:Value of <h:selectBooleanCheckbox> inside <p:dataTable> remains false on submit<p:dataTable> 中的 <h:selectBooleanCheckbox> 的值在提交时保持为 false
【发布时间】:2012-08-02 01:46:30
【问题描述】:

我有一个 primefaces 数据表,在 primefaces 数据表内,我有一列,其中包含 .问题是,我已将默认值设置为 false。当我单击/检查时,它仍然将值检索为 false。我尝试了多次,但不确定为什么它返回错误。请在下面找到示例代码。

  <p:dataTable  id="review-table" var="item" value="#{demandBean.filterVOList}">
  <p:column id="SelectallID" style="text-align: left; width:40px;" rendered="#{demandBean.screeRenderVo.selectAllRenderer}">
 <f:facet name="header" >
  <h:outputText id="selectId"  value="#{demandBean.dmdScreenLabelVO.selectAll}" />
                    <div></div>
<h:selectBooleanCheckbox id="checkbox1" value="Select All" onclick="checkAll(this)"/>
</f:facet>
<h:selectBooleanCheckbox id="checkbox2"  value="#{item.selected}"/>
</p:column>

当我检查并单击保存按钮时,我将值设为 false。我写了一个Action监听器,下面是actionListener对应的代码

public void saveData(ActionEvent event)
{
    System.out.println("Entering the Save :");
    selected = isSelected();
    System.out.println("value of Selected"+selected);
}

我也尝试过调试代码,但不确定为什么 for 的值显示为 false。请协助。提前致谢

【问题讨论】:

    标签: jsf primefaces datatable selectbooleancheckbox


    【解决方案1】:

    您似乎将列中所有复选框的值绑定到唯一的 bean 属性。这样,该值最终将成为该列中的最后一行。

    这不是它应该被使用的方式。

    您基本上需要将复选框的值绑定到当前迭代的行对象的属性(数据表的var属性后面的那个)。

    <p:dataTable value="#{bean.items}" var="item">
        <p:column>
            <p:selectBooleanCheckbox value="#{item.selected}" />
    

    或者,您可以使用 &lt;p:column selectionMode="multiple" /&gt; 来使用 PrimeFaces 数据表 (see also the showcase example) 的内置多选支持。

    <p:dataTable value="#{bean.items}" var="item" rowKey="#{item.id}" selection="#{bean.selectedItems}">
        <p:column selectionMode="multiple" />
    

    【讨论】:

    • 您好 Balus,非常感谢您的回复。我什至尝试过同样的方法。请找到我编辑并更新我的帖子的代码。但是,当我尝试选中复选框时,即使选中了复选框,它也会返回一个 false 值。我也不想使用 primefaces 选择模式,因为与普通的 相比,样式不同。
    • &lt;p:column&gt;rendered 属性在处理表单提交期间评估了false 时,可能会发生这种情况。顺便说一下,除了将值绑定到项目的属性之外,还有另一种方法;通过项目标识符将其绑定到Map&lt;IdType,Boolean&gt;,另见stackoverflow.com/questions/2524514/…(请注意,这不会解决“假”值问题,它只是另一种设计方法)。
    • @BalusC 我遇到了同样的问题,但是使用 ,bean 被调用,但方法没有......你能帮帮我吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多