Làm cách nào để đạt được điều này, làm cho các hằng số có thể truy cập từ cả tệp sao lưu và tệp XHTML?
Trong hạt sao lưu, điều này rõ ràng là dễ dàng. Vì chúng chỉ là các lớp Java, nó không khác với cách Java "bình thường". Bạn có thể sử dụng các trường enum
s hoặc public static final
. Theo quan điểm, đây là một câu chuyện khác. Cho đến phiên bản 3.0 sắp tới, EL không có nghĩa là không hỗ trợ các hằng số theo bất kỳ cách nào.
Tôi khuyên bạn nên sử dụng enums vì EL đã hỗ trợ tiềm ẩn cho chúng trong các so sánh chuỗi. Nó không thực hiện bất kỳ kiểm tra an toàn kiểu nén/thời gian chạy nào, nhưng bạn có thể sử dụng tên enum dưới dạng một chuỗi. Ví dụ.
<h:someComponent ... rendered="#{order.status == 'SHIPPING'}" />
Nếu bạn thích nhiều mã tự chủ tài liệu và một tấm séc runtime (không, một tấm séc compiletime là không thể), sau đó bạn có thể xem xét sử dụng OmniFaces<o:importConstants>
.
<o:importConstants type="com.example.OrderStatus" />
<h:someComponent ... rendered="#{order.status == OrderStatus.SHIPPING}" />
Đây là IMO chỉ hơi vụng về hơn một chút. Việc kiểm tra thời gian chạy là tuy nhiên tốt đẹp trong quá trình phát triển. Một lỗi đánh máy dễ dàng được giám sát.
Trong EL 3.0 sắp tới (JSR-341, một phần của Java EE 7), có thể tham chiếu các hằng số theo cùng một cách. Xem thêm How to reference constants in EL? Điều này chỉ yêu cầu nhập có lập trình các hằng số vì không có thẻ JSP/Facelets chuẩn cho điều đó.
Tại sao bạn không có lớp học với 'chuỗi cuối cùng tĩnh công cộng page1 =" page1.xhtml "'. Hãy nhớ rằng lớp này sẽ được sử dụng trong các bean được quản lý của bạn. Nếu bạn định sử dụng bất kỳ giá trị nào trong số các giá trị này trong mã JSF của mình, thì bạn có thể thêm @ApplicationScope vào lớp và getters cho 'String' mà bạn sẽ sử dụng. –
Bạn có thể giải thích bằng một ví dụ không? – javaMS