PrimeFaces dataTables에서 여러 항목을 선택하지 않은 것 같습니다.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>
내 컨트롤러와 백업 빈 클래스 :
을 나는 클라이언트 (데이터 목록)의 목록을 구현 및 결제에 대해 여러 예약을 선택 가능성과 중첩 dataTables에 각각 예약을 표시하기 위해 노력하고있어
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();
}
}
ㄴ
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
의 매개 변수 값과 함께 호출됩니다.
primefaces 버전을 제공하십시오 – Jitesh