2013-01-31 32 views
11

Tôi đã sử dụng ui: lặp lại để tạo bảng. Với ui: lặp lại thật dễ dàng để có được các hàng được đánh số bằng cách sử dụng varStatus. Tôi phụ thuộc vào id của hàng từ varStatus khi gọi bean sao lưu để xử lý điều hướng danh sách, ví dụ như di chuyển một mục lên hoặc xuống trong danh sách.JSF 2 chỉ mục hàng dataTable không có dữ liệuModel

Bây giờ tôi muốn tạo thành phần hỗn hợp để xây dựng bảng có thể tùy chỉnh với tất cả chức năng cần thiết để đánh dấu hàng, di chuyển lên/xuống, v.v. Để làm điều này, ui: lặp lại sẽ không hoạt động như tôi có thể ' t xem cách xử lý số cột khác nhau; Tôi cần phải xác định các tiêu đề ở một nơi và cơ thể ở một nơi khác (và tôi đã không đạt đến điểm kiến ​​thức nơi tôi có thể tạo một thành phần tùy chỉnh). Vì vậy, tôi đã đi vào để datatable thay vào đó, như sử dụng có nghĩa là xác định các tiêu đề như các khía cạnh tại cùng một vị trí như nội dung cơ thể.

Điều đó có hiệu quả cho đến khi tôi nhận thấy rằng vì một lý do nào đó, không còn varStatus nữa. Tôi đã đặt rất nhiều công việc vào việc xử lý bản trình bày danh sách mà không cần bất kỳ một số datamodel và tôi không muốn bắt đầu sử dụng nó. Có cách nào để tôi có thể lấy số hàng hiện tại vì nó được hiển thị trong bảng, mà không sử dụng datamodel?

Tôi cũng đang sử dụng viewScope và nếu tôi đã hiểu chính xác điều đó có nghĩa là tôi không thể liên kết dataTable với bean.

Trả lời

28

Chỉ cần liên kết bảng với chính chế độ xem thay vì một bean.

<h:dataTable binding="#{table}" ...> 

Sau đó, bạn có thể sử dụng #{table.rowIndex} nếu cần. Ví dụ.

<h:column>#{table.rowIndex + 1}</h:column> 
+1

Tôi đọc một bài đăng khác nơi bạn có giải pháp này, mặc dù tôi nghĩ rằng ràng buộc = "# {table}" là một cách viết tắt để gắn kết với bean. Tôi không biết điều này là có thể. Cảm ơn bạn BalusC! – nivis

+0

Bạn được chào đón. – BalusC

+0

Tôi nghĩ chính xác theo cách giống như @nivis. Có lẽ vì giá trị của thuộc tính 'var' KHÔNG cần câu lệnh EL, nhưng giá trị của thuộc tính' binding' DOES. Tôi đã định kiến ​​rằng mọi giá trị được đặt tên bên trong câu lệnh EL phải được khai báo (một mình), và tôi cảm thấy như đặt tên cho biến (ví dụ 'table',' rowItem') KHÔNG nên xảy ra với các câu lệnh EL. –

Các vấn đề liên quan