我正在关注此链接http://balusc.blogspot.com/2006/06/using-datatables.html以选择多个复选框并检索 bean 中的值:
我的jsf代码如下:
<p:dataTable value="#{deviceController.devicesModel}"
var="item" widgetVar="deviceTable"
selection="#{deviceController.selectedDevices}"
rowKey='#{item}'>
<p:column sortBy="#{item.manufacturerSerialNum}" filterBy="#{item.manufacturerSerialNum}">
<f:facet name="header">
<h:outputText value="Manufacturer Serial No"/>
</f:facet>
<h:outputText value="#{item.manufacturerSerialNum}" />
</p:column>
<p:column selectionMode="multiple">
<f:facet name="header">
<h:outputText value="#{bundle.ListLaptopTitle_inService}"/>
</f:facet>
<h:selectBooleanCheckbox value="#{item.isInService}"/>
</p:column>
</p:dataTable>
<p:commandButton action="#{deviceController.getSelectedItems}"
value="Submit Request" style="margin-top: 20px"/>
我的bean代码是:
public String getSelectedItems(){
selectedDevicesList = new ArrayList<Device>();
List<Device> dev=createDeviceList();
for (Device item :dev ) {
if (item.getIsInService()) {
selectedDevicesList.add(item);
item.setIsInService(false); // Reset.
}
}
return "selected";
}
我不明白的是我们在哪里传递表中选定行的值。最初,如果我有 4 行并且现在当我检查两行时所有复选框都未选中,那么它应该转到 bean 并且这两个值应该在数据库中更新。就像我应该inservice
在我的 bean 中将这两个 bean 的字段值设为 true。你能让我知道我缺少什么吗?谢谢。