3

在我的应用程序中,我有 ah:datatable,其中包含车辆数据和 h:selectBooleanCheckBox 在其每一行中。我想知道支持 bean 中数据表数据表行中的选定复选框,而不应用任何提交按钮。这样做的想法是;当任何用户单击一个应用程序页面中的复选框时,她/他也可以很容易地看到其他页面中的选定行,因为每个页面中的数据表都包含许多车辆。因此,用户可以在任意页面看到选中的车辆并进行相关操作。

下面显示了我的 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字段并像这样为其添加gettersetter方法。

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 回答