jsf
  • jsf-2
  • primefaces
  • facelets
  • mojarra
  • 2012-05-07 96 views 4 likes 
    4

    我似乎沒有在PrimeFaces數據表中獲得多項選擇。PrimeFaces:DataTable多項選擇不起作用

    我想實現客戶端(DataList控件)的列表,並顯示在嵌套數據表各自的擔保可能選擇多個預訂進行計費:

    <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類:

    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 rowser張貼下列數據到服務器,當我提交表單與我的選擇:

    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對象(選定的)過程中發現的。

    但是,總是將空數組傳遞給我的Client對象的setBookingsToBill。這裏可能會出現什麼問題?


    更新:

    空數組只過了第一Client對象 - 如果預訂已被選中與否並不重要。使用參數值null調用所有其他Client對象的方法setBookingsToBill

    +0

    請提供primefaces版本 – Jitesh

    回答

    -3

    selectionMode應該是<p:dataTable>標記的一部分。

    這裏是一個鏈接到陳列櫃有一個例子。 http://www.primefaces.org/showcase/ui/datatableRowSelectionMultiple.jsf

    +0

    查看Felipe的評論 - 這將刪除複選框並允許通過點擊控制/命令進行多次選擇 – prule

    0

    不是真的,如果你想與複選框多重選擇你所要做的是JFS那樣:

    在展示有證據顯示只是一個例子。它將創建一個包含用戶選擇框的列。您也可以按照您的說法使用p:dataTable的屬性來執行操作,但這不會創建框,並且用戶必須控制+單擊才能執行多重選擇。

    相關問題