1

多くの列があり、列の1つがh:selectbooleancheckboxであるrich:datatableがあります。ユーザーがデータテーブル内の多数のチェックボックスから一度に1つのチェックボックスだけを選択するようにします。チェックボックスを一度選択すれば、問題なくフォームに送信できます。たとえば、2番目のチェックボックスを選択すると、前のチェックボックスの選択を解除する必要があります。どうすればそれができますか?よろしくお願いします...私が使用しているデータテーブルは次のとおりです。

<rich:dataTable id="vehicleTable" var="vhcl" value="#{tripsBacking.vehicleList}"
binding="#{tripsBacking.vehicleTable}" sortMode="single" 
footerClass="dr-table-footer rich-table-footer"
style="width: 500px; margin: 0px; padding: 0px;">

<rich:column id="col1" width="10px" headerClass="dr-table-header rich-table-header">
    <f:facet name="header">

    </f:facet>
    <h:selectBooleanCheckbox title="#{general.select}" >
    </h:selectBooleanCheckbox>
</rich:column>
<rich:column id="col2" label="#{general.vehicleName}" headerClass="dr-table-header rich-table-header" >
    <f:facet name="header">
        <h:outputText value="#{general.vehicleName}" id="vehicleNameLbl" />
    </f:facet>
    <h:outputText value="#{vhcl.vehicle.vehicleName}" id="vehicleNameValue" />
</rich:column>

<rich:column id="col3" label="#{general.vehicleType}" headerClass="dr-table-header rich-table-header" >
    <f:facet name="header">
        <h:outputText value="#{general.vehicleType}"
            id="state_capital" />
    </f:facet>
    <h:graphicImage value="#{vhcl.typeImage}" height="40" width="40" align="left"/>
</rich:column>
<rich:column id="col4" label="#{general.lastMessageDate}"
    headerClass="dr-table-header rich-table-header" > 
    <f:facet name="header">
        <h:outputText value="#{general.lastMessageDate}" id="lastMsgDateLabel" />
    </f:facet>
    <h:outputText value="#{vhcl.messageDate}" id="lastMsgDate" /> 
</rich:column>
<rich:column id="col5a" label="#{general.address}"
    headerClass="dr-table-header rich-table-header" >
    <f:facet name="header">
        <h:outputText value="#{general.address}" id="addressLabel" />
    </f:facet>
    <h:outputText value="#{vhcl.address}" id="addr" />
</rich:column>

4

1 に答える 1

0

Ajax はすべての変更を送信し、リストから以前に選択されたすべての項目を選択解除するア​​クション リスナー メソッドを備えています。

<h:selectBooleanCheckbox title="#{general.select}" >
    <a4j:support event="onclick" listener="#{tripsBacking.selectSingleRow}" reRender="vehicleTable">
       <!-- use property that uniquely identifies a row -->
       <f:attribute name="selectedVehicleName" value="#{general.vehicleName}"/>
    </a4j:support>
</h:selectBooleanCheckbox>

上記のようなものになります。ここで、deselectAll は Bean のアクション リスナー メソッドです。

public void selectSingleRow(ActionEvent event) {
    String vehicleName = (String) event.getComponent().getAttributes().get("selectedVehicleName");
    for (Vehicle v : vehicleList) {
          if (!v.getVehicleName.equals(vehicleName)) {
               v.setSelected(false);     
          }
    } 
}
于 2013-01-16T12:18:03.280 に答える