PrimeFacesのデータテーブルで複数の選択肢が表示されないようです。PrimeFaces:DataTableの複数の選択が機能しない
<p:dataList value="#{clientController.allClients}" var="client">
<p:column>
<p:dataTable value='#{client.bookingsDataModel}' var='item' selection="#{client.bookingsToBill}">
<p:column selectionMode="multiple" />
</p:dataTable>
</p:column>
</p:dataList>
私のコントローラとバッキングBeanクラス:
を私はクライアント(データリスト)のリストを実装し、課金のために複数の予約を選択することが可能で、ネストされたDataTableの内のそれぞれの予約を表示しようとしている
public class ClientController {
public List<Client> getAllClients() {
return clients;
}
}
public class Client {
private List<Booking> bookings;
private Booking[] bookingsToBill;
public LeistungDataModel getBookingsDataModel() {
return new BookingsDataModel(bookings);
}
public Booking[] getBookingsToBill() {
return bookingsToBill;
}
public void setBookingsToBill(Booking[] bookingsToBill) {
this.bookingsToBill = bookingsToBill;
}
}
データ・モデル・クラス:
public class BookingsDataModel extends ListDataModel<Booking> implements SelectableDataModel<Booking> {
public BookingsDataModel(List<Booking> data) {
super(data);
}
@Override
public Booking getRowData(String rowKey) {
List<Booking> bookings = (List<Booking>) getWrappedData();
for(Booking booking : bookings) {
if(("booking_"+booking.getId().toString()).equals(rowKey)) {
return booking;
}
}
return null;
}
@Override
public Object getRowKey(Booking booking) {
return "booking_"+booking.getId().toString();
}
}
B
j_idt9%3Aj_idt13%3A0%3Aj_idt15_selection:booking_300,booking_301,booking_302
j_idt9%3Aj_idt13%3A1%3Aj_idt15_selection:booking_566,booking_567
j_idt9%3Aj_idt13%3A2%3Aj_idt15_selection:
はまた、私はBookingsDataModel
のgetRowData
方法が正しいBooking
オブジェクト(選択したもの)を返し、デバッグ中に発見された:私は私の選択でフォームを送信するときrowserは、サーバーに次のデータをポストします。
ただし、空の配列は、常にClient
オブジェクトのsetBookingsToBill
に渡されます。ここで何がうまくいかないのでしょうか?
更新:
は空の配列は、最初のClient
オブジェクトを渡される - 予約が選択されたかどうかは問題ではありません。その他のすべてのClient
オブジェクトのsetBookingsToBill
メソッドは、パラメータ値がnull
で呼び出されます。
プライムフェイスのバージョンを提供してください – Jitesh