2009-08-26 10 views
8

Cú pháp gọi list.size() trong khuôn mẫu JSF 2.0 Facelets (ví dụ, sử dụng phần tử h: outputText) là gì?Làm thế nào để bạn gọi List.size() từ một khuôn mẫu JSF 2.0 Facelets?

+0

có thể trùng lặp: http://stackoverflow.com/questions/206161/jsf- danh sách dài – seth

+0

@seth - Trong khi đó có chứa một câu trả lời hợp lý (mà nên làm việc với JSF 2.0, mặc dù câu trả lời có trước), tôi hỏi câu hỏi này đặc biệt để tìm hiểu xem có bất kỳ cập nhật nào cho JSF 2.0 có thể ảnh hưởng đến giải pháp. :) – jsight

Trả lời

22

Làm thế nào về điều này:

<h:outputText value="#{fn:length(someBean.someList)}" /> 

Bạn sẽ cần phải tham khảo các functions taglib trong trang JSF của bạn (URI: http://java.sun.com/jsp/jstl/functions).

5

Nó không phải là một vấn đề với JSF 2.0 chính xác. Đặc tả JSF vẫn yêu cầu một lớp phù hợp với đặc tả bean. Các lớp sưu tập không làm điều đó với phương thức .size(). Nó vẫn sẽ là .getSize(). Với sự cần thiết cho một cách "tiêu chuẩn" để truy cập các giá trị lớp, chúng tôi không nhận được xung quanh đó trong JSF bất cứ lúc nào sớm. Ai đó cần sửa các lớp thu.

+0

IC ... Tôi đã hy vọng rằng họ đã làm lại cú pháp biểu thức để cho phép các cuộc gọi phương thức. Nó có thể bị lạm dụng, nhưng nó sẽ dễ dàng làm việc xung quanh các trường hợp như thế này. :) Tôi vẫn không hiểu tại sao nhà thiết kế lớp sưu tập lại chọn cách làm theo cách này. – jsight

5

Chỉ cần cố gắng #{myBean.myList.size()}

+2

Điều đó sẽ không hoạt động với chuẩn el. Có el mở rộng mặc dù (chẳng hạn như jboss el) cho phép ký hiệu này. –

+2

Thao tác này sẽ hoạt động trên bất kỳ Máy chủ ứng dụng Java EE 6 nào – Lincoln

+0

Rõ ràng không phải như vậy (xem tôi ngạc nhiên): xem http://community.jboss.org/thread/173971 – Kawu

2

Lưu ý: Không gian tên chính xác cho "fn" được thêm vào như thế này:

<html xmlns="http://www.w3.org/1999/xhtml" 
     ... 
     xmlns:fn="http://java.sun.com/jsp/jstl/functions">