【问题标题】:JSF / Primefaces selectBooleanCheckbox component in dataTable always unchecked数据表中的 JSF / Primefaces selectBooleanCheckbox 组件始终未选中
【发布时间】:2013-04-03 22:24:45
【问题描述】:

在我的项目中,我使用的是 JSF 2.0 和 Primefaces 3.5。

在一页中我有一个p:dataTable,表格的一列有selectBooleanCheckbox。我尝试了p:selectBooleanCheckboxh:selectBooleanCheckbox。我的代码如下:

<h:panelGrid columns="3">
            <p:selectBooleanCheckbox id="id" value="false" />
            <p:selectBooleanCheckbox id="id" value="true" />
            <p:dataTable id="tbl" value="#{bean.items}" var="item" paginator="false">
                <p:column>
                    <h:outputText value="#{item.value}" />
                </p:column>
                <p:column>
                    <h:outputText value="#{item.value}" />
                </p:column>
                <p:column style="white-space:normal; text-align: center;">
                    <p:selectBooleanCheckbox id="id" value="#{item.checked}" />
                    <p:selectBooleanCheckbox id="id" value="true" />
                    <p:selectBooleanCheckbox id="id" value="false" />
                    <h:selectBooleanCheckbox id="id" value="true" />
                    <h:selectBooleanCheckbox id="id" value="false" />
                </p:column>
            </p:dataTable>
        </h:panelGrid>

结果:

我想显示 selectBooleanCheckbox 的正确大小写。有什么建议吗?

【问题讨论】:

  • 虽然 navand 的答案可以满足您的需求,但我不明白您为什么没有将 selectBooleanCheckbox 的值绑定到您的 #{item} var 的属性。
  • 我发现了我的错误。在上面的代码(示例 sn-p)中,我使用了 value="#{item.checked}",但在我的真实代码中,我使用了 value="item.checked"。现在我正在使用value="#{item.checked}",它正在工作。

标签: java jsf checkbox primefaces facelets


【解决方案1】:

您应该使用#{true}#{false} 而不是truefalse
像这样:

<p:selectBooleanCheckbox id="id" value="#{true}" />

【讨论】:

  • 我在使用这个时工作:&lt;p:selectBooleanCheckbox id="id" value="true" /&gt; 在数据表之外?
  • 对不起,我不知道为什么,如果我找到了,告诉你。
【解决方案2】:

您似乎没有将复选框链接到支持 bean 中的任何值。尝试将值存储在您的支持 bean 中并将其反映在您的复选框中。例如,

支持 Bean:

private Boolean value1 = true;
private Boolean value2 = false;

//appropriate getters and setters for the above values

JSF 页面片段:

<p:selectBooleanCheckbox value="#{backingbean.value1}" itemLabel="Value 1"/>
<p:selectBooleanCheckbox value="#{backingbean.value2}" itemLabel="Value 2"/>

这应该导致第一个复选框被选中(因为 value1 = true),第二个不应该是 value2 = false。以这种方式,每当您单击复选框时,它的值也将分别反映在 value1 和 value2 中。

希望对你有帮助……

此外,@navand 说如果您想手动设置复选框是否选中,则使用 #{true} 和 #{false} 是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多