複数のチェックボックスを選択し、Bean の値を取得するために、このリンクhttp://balusc.blogspot.com/2006/06/using-datatables.htmlをたどっています。
私の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"/>
私のビーンコードは次のとおりです。
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 つの行があり、2 つの行をチェックしたときにすべてのチェック ボックスがオフになっている場合、Bean に移動し、これらの 2 つの値をデータベースで更新する必要があります。これら 2 つの Beanのフィールドの値をinservice
自分の Bean で true として取得する必要があるように、不足しているものを教えてください。ありがとうございます。