2011-11-12 31 views
6

tôi tạo ra một thành phần hỗn hợp như thế này:Tại sao thuộc tính kết hợp thành phần "được hiển thị" lại ném Ngoại lệ IllegalArgument?

<cc:interface>   
    <cc:attribute name="value" 
        required="true" /> 
    <cc:attribute name="rendered" 
        displayName="True to render" 
        default="true" /> 
</cc:interface> 

Khi tôi gọi thành phần này, tôi nhận được một IllegalArgumentException. Tôi có thể thay đổi trả lại tên cho một thứ khác (như doIt) và sau đó nó hoạt động.

Có phải được hiển thị thuộc tính được đặt trước bằng cách nào đó không? Tôi muốn thành phần tổng hợp của tôi trông giống như các thành phần JSF "thông thường".

Đây là với Mojarra.

+0

Trong tương lai, bạn không cần phải gắn thẻ rõ ràng '[mojarra]' nếu vấn đề không phải là Mojarra cụ thể. Bạn sẽ có chính xác cùng một vấn đề khi bạn cố gắng ví dụ MyFaces. Chỉ cần đề cập đến JSF impl/version trong câu hỏi là đủ. – BalusC

+0

Tôi đặt Mojarra ở đó vì tôi nghĩ đó có thể là một lỗi của Mojarra. Nhưng điểm lấy. – AlanObject

Trả lời

13

thành phần composite mở rộng UINamingContainer đó lần lượt mở rộng UIComponentBase mà lần lượt đã definies các idrendered thuộc tính. Bạn không cần phải tự xác định chúng. Chỉ cần xóa <cc:attribute name="rendered">. Nếu bạn chỉ định thuộc tính rendered trên thẻ thành phần tổng hợp, thì nó sẽ được diễn giải và áp dụng trên chính thành phần tổng hợp.

Nếu bạn muốn hiển thị cụ thể trẻ em của hỗn hợp, sau đó phát minh tốt hơn tên thuộc tính khác. Ví dụ: renderSomeChild.

+0

Khi chỉnh sửa thành phần trong trình soạn thảo NetBeans 7.1, nó coi thuộc tính ** rendered ** là một lỗi khi nó không được xác định bởi phần tử ** cc: attribute **. Đó có phải là lỗi Netbeans không? – AlanObject

+0

Xin lỗi, tôi đã không thực sự sử dụng Netbeans trong hơn 5 phút. Nó hoạt động tốt theo cách đó trong Eclipse. – BalusC

+2

Có ý nghĩa nhiều khi bạn trả lời, nó có cùng một vấn đề trong Eclipse: Thuộc tính "kết xuất" của thành phần cấu tạo của riêng tôi được gạch chân và đánh dấu là một phần tử không xác định. JSF 2.1.24, Eclipse 3.7.2 với các công cụ JBOSS JSF. – alfonx

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