2012-05-07 4 views
4

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: 

은 또한, 나는이 BookingsDataModelgetRowData 방법은 올바른 Booking 객체 (선택된 것)를 반환 디버깅 중에 발견 : 나는 내 선택에 양식을 제출할 때 rowser은 서버에 다음 데이터를 게시합니다.

그러나 항상 빈 배열은 내 Client 개체의 setBookingsToBill으로 전달됩니다. 여기서 무엇이 잘못 될 수 있습니까?


는 업데이트 :

는 빈 배열은 첫 번째 Client 객체를 전달 - 예약이 선택되었는지의 경우 문제가되지 않습니다. 다른 모든 Client 개체의 setBookingsToBill 메서드는 null의 매개 변수 값과 함께 호출됩니다.

+0

primefaces 버전을 제공하십시오 – Jitesh

답변

0

은별로, 당신은 JFS가했던 것처럼 할 필요가 : 쇼케이스에서

단지를 보여주는 하나의 예가있다. 사용자가 선택할 수있는 상자가 포함 된 열을 만듭니다. p : dataTable의 속성을 사용하여 말한 것처럼 할 수도 있지만 상자를 만들지는 않으므로 사용자가 여러 선택을 제어하려면 + 클릭을해야합니다.

관련 문제