0

私はprimefacesデータテーブルを持っており、primefacesデータテーブルの中に.を含む列があります. 問題は、のデフォルト値を false に設定したことです。をクリック/チェックすると、まだ値が 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 になります。私はアクションリスナーを書きました。以下はactionListenerに対応するコードです

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

コードのデバッグも試みましたが、値が false として表示される理由がわかりません。手伝ってください。前もって感謝します

4

1 に答える 1

1

列内のすべてのチェックボックスの値を同じBean プロパティにバインドしているようです。このようにして、値は最終的に列の最後の行の 1 つになります。

これは本来の使い方ではありません。

基本的に、チェックボックスの値を現在反復されている行オブジェクト (データテーブルのvar属性の背後にあるオブジェクト) のプロパティにバインドする必要があります。

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

<p:column selectionMode="multiple" />または、 を使用して、PrimeFaces データテーブルの組み込みの複数選択サポートを使用することもできます(ショーケースの例も参照してください)。

<p:dataTable value="#{bean.items}" var="item" rowKey="#{item.id}" selection="#{bean.selectedItems}">
    <p:column selectionMode="multiple" />
于 2012-08-02T02:31:34.550 に答える