3

私のアプリケーションでは、車のデータを含む ah:datatable と、各行に h:selectBooleanCheckBox があります。送信ボタンを適用せずに、バッキングビーンのデータテーブルデータテーブルの行で選択されたチェックボックスを知りたいです。これを行うアイデアは次のとおりです。ユーザーが 1 つのアプリケーション ページでチェック ボックスをクリックすると、他のページでも選択した行が簡単に表示されます。これは、すべてのページのデータ テーブルに多くの車両が含まれているためです。したがって、ユーザーは選択した車両をどのページでも見ることができ、関連する操作を行うことができます。

以下は、私の JSF ページの一部を示しています。

<rich:dataTable id="vehicleTable" var="vhcl" value="#{mainPage.vehicleList}"
binding="#{mainPage.vehicleTable}" > 
<rich:column id="col_sel" width="10px"
<h:selectBooleanCheckbox title="#{general.showOnMap}" onclick="showOnMap(this)"   id="selectedCheckBox" />
</rich:column>
<rich:column id="trackId" label="#{general.vehicleName}" >
    <f:facet name="header">
     <h:outputText value="#{general.vehicleName}" id="state_name" />
    </f:facet>
<h:outputText value="#{vhcl.vehicle.mtsTrackId}" id="vehicleId" title="#{general.vehicleId}" style="font-size:10px; color:blue;" />
    <br/>
<h:outputText value="#{vhcl.vehicle.vehiclePlate}" id="vehiclePlate" title="#{general.licencePlate}" style="font-size:10px; color:blue"/>
</rich:column>
<rich:column  id="type_col" label="#{general.vehicleType}" >
<f:facet name="header">
    <h:outputText value="#{general.vehichleType}" id="vehichleTypeLabel" />
</f:facet>
<h:graphicImage value="#{vhcl.typeImage}" height="40" width="40" align="left"/>
<h:panelGrid columns="1" align="right">
    <h:graphicImage id="statusImage" value="#{vhcl.statusImage}" title="#{vhcl.status}" height="15" width="15" />
    <h:graphicImage id="motorStatusImage" value="#{vhcl.motorStatusImage}" title="#{vhcl.motorStatus}" height="15" width="15" />
</h:panelGrid>
</rich:column>
<rich:column id="msg_col" label="#{general.lastMessageDate}" >
<f:facet name="header">
    <h:outputText value="#{general.lastMessageDate}" id="lastMsgDateLabel" />
</f:facet>
<h:outputText value="#{vhcl.messageDate}" id="lastMsgDate" /> 
<br />
<h:outputText value="Hız: " />
<h:outputText value="#{vhcl.instantSpeed}" id="lastSpeed" style="color:blue; font-weight:bold" />
<h:outputText value="km/s" />
</rich:column>
<rich:column id="addr_col" label="#{general.address}" >
<f:facet name="header">
    <h:outputText value="#{general.address}" id="addressLabel"/>
</f:facet>
<h:outputText value="#{vhcl.address}" id="addr" />
<br />
<h:outputText value="#{vhcl.location}" id="location" style="color:blue;" />
</rich:column>

4

1 に答える 1

2

VehicleクラスでBooleanフィールドを作成し、このようにメソッドを追加getterします。setter

private Boolean selected;

public Boolean getSelected() {
  return selected;
}

public void setSelected(Boolean selected) {
  this.selected = selected;
}

次に、そのプロパティにバインドし、以下のようにタグをcheckBox追加します。<a4j:support>checkBox

<h:selectBooleanCheckbox onclick="showOnMap(this)" value="#{vhcl.selected}">
  <a4j:support event="onchange" ajaxSingle="true"/>
</h:selectBooleanCheckbox

これで、値をオンまたはオフにするcheckBoxと、Bean に送信されます。vehicle次に、このように選択されているかどうかをいつでも確認できます。

if(vehicle.selected != null && vehicle.selected) {
  //vehicle is selected
}

注: テーブルはフォーム内にある必要があります。

于 2012-11-29T11:29:23.173 に答える