Hiển thị có điều kiện các thành phần JSF


79

Đầu tiên, tôi chưa quen với Java EE, đến từ nền tảng phát triển ASP .NET mạnh mẽ. Tôi đã xem qua mạng, và tôi có thể bỏ lỡ điều này nhưng có vẻ như không có hướng dẫn đơn giản và trực tiếp về cách tôi có thể kết nối lớp đậu sao lưu với các thành phần JSF.

Một ví dụ điển hình là như thế này, hiện tại tôi đang cố gắng tạo một trang JSF trong đó có một tập hợp các liên kết là thanh menu và một tập hợp các biểu mẫu. Những gì tôi dự định làm là, khi nhấp vào một liên kết, một biểu mẫu cụ thể sẽ được hiển thị.

Trong ASP.NET, tôi có thể dễ dàng truy xuất phần tử và sau đó đặt thuộc tính có thể hiển thị. Tôi đang tự hỏi liệu có cách nào dễ dàng (heck, thậm chí là bất kỳ cách nào) để làm điều này trong JSF không.

Các biểu mẫu đã có trong trang, chỉ cần đặt thuộc tính "render" thành true khi tôi nhấp vào một liên kết cụ thể.

Câu trả lời:


158

Có, hãy sử dụng renderedthuộc tính.

<h:form rendered="#{some boolean condition}">

Bạn thường buộc nó vào mô hình hơn là để mô hình lấy thành phần và thao tác với nó.

Ví dụ

<h:form rendered="#{bean.booleanValue}" />
<h:form rendered="#{bean.intValue gt 10}" />
<h:form rendered="#{bean.objectValue eq null}" />
<h:form rendered="#{bean.stringValue ne 'someValue'}" />
<h:form rendered="#{not empty bean.collectionValue}" />
<h:form rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:form rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Lưu ý tầm quan trọng của các nhà khai thác EL dựa từ khóa như gt, ge, leltthay vì >, >=, <=<là dấu ngoặc nhọn <>được dành riêng nhân vật trong XML. Xem thêm phần Hỏi và Đáp có liên quan này: Lỗi khi phân tích cú pháp XHTML: Nội dung của các phần tử phải bao gồm dữ liệu ký tự hoặc đánh dấu được định dạng tốt .

Đối với trường hợp sử dụng cụ thể của bạn, hãy giả sử rằng liên kết đang chuyển một tham số như sau:

<a href="page.xhtml?form=1">link</a>

Sau đó, bạn có thể hiển thị biểu mẫu như dưới đây:

<h:form rendered="#{param.form eq '1'}">

( #{param}là một đối tượng EL ngầm đề cập đến một Mapđại diện cho các tham số yêu cầu)

Xem thêm:


13

Ngoài bài viết trước, bạn có thể có

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />

Jsf 2.0


1
Một bổ sung nhỏ như vậy không có giá trị một câu trả lời riêng biệt.
Karl Richter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.