在我的应用程序中,我有一个h: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>
答案 0 :(得分: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
}
注意:您的表格应该在表格中。