当选择模式=多个时,如何在数据表中进行值绑定

时间:2014-10-10 12:14:54

标签: jsf primefaces

我需要在p:对话框里面的outputText中解释下面的值绑定。我不清楚,还有其他方法。

在我的样本中: 我试过,如果我选中单个或多个复选框,则值被绑定,但是当我单击用于选中所有复选框的根复选框时,它被选中,但值不会存储在后端。

    

<p:dataTable id="checkboxDT" 
             var="car" 
             value="#{dtSelectionView.cars6}" 
             selection="#{dtSelectionView.selectedCars}" 
             rowKey="#{car.id}" 
             style="margin-bottom:0">
    <f:facet name="header">
        Checkbox
    </f:facet>
    <p:column selectionMode="multiple" 
              style="width:16px;text-align:center"/>
    <p:column headerText="Id">
        <h:outputText value="#{car.id}" />
    </p:column>
    <p:column headerText="Year">
        <h:outputText value="#{car.year}" />
    </p:column>
    <p:column headerText="Brand">
        <h:outputText value="#{car.brand}" />
    </p:column>
    <p:column headerText="Color">
        <h:outputText value="#{car.color}" />
    </p:column>
    <f:facet name="footer">
        <p:commandButton process="checkboxDT" 
                         update=":form:multiCarDetail" 
                         icon="ui-icon-search" 
                         value="View" 
                         oncomplete="PF('multiCarDialog').show()" />
    </f:facet>
</p:dataTable>



<p:dialog header="Selected Cars" 
          widgetVar="multiCarDialog" 
          modal="true" 
          showEffect="fade" 
          hideEffect="fade" 
          resizable="false" 
          width="200">
    <p:outputPanel id="multiCarDetail" style="text-align:center;">
        <ui:repeat value="#{dtSelectionView.selectedCars}" 
                   var="car">

            <h:outputText value="#{car.id} - #{car.brand}" 
                          style="display:block"/>
        </ui:repeat>
    </p:outputPanel>
</p:dialog>

1 个答案:

答案 0 :(得分:1)

您应该更新checkboxDT,因为更新用于确定要更新的组件的ID(使用服务器的更新值刷新)。如果不更新checkboxDT,则selectedCars也不会更新。

<p:commandButton process="checkboxDT" 
                 update="checkboxDT,:form:multiCarDetail" 
                 icon="ui-icon-search" 
                 value="View" 
                 oncomplete="PF('multiCarDialog').show()" />