2010-08-03 38 views
10

[Setup My: Java EE 6 ứng dụng, với EJB3.1, CDI/Weld, JSF2 chạy trên Glassfish 3.0.1]Cách truy cập javax.faces.PROJECT_STAGE từ mã xem/mã bên trong?

Tôi chỉ đọc về Faces ProjectStage trên this page, mà là một điều thú vị. Vì vậy, tôi cấu hình nó trong web.xml của tôi, đặt nó vào phát triển:

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 

Bây giờ tôi muốn truy cập vào ProjectStage từ quan điểm JSF (thiết lập sự hiện diện của các thành phần giao diện người dùng cụ thể cho phù hợp).

Vì vậy, tôi đã thử những thứ như một văn bản có giá trị #{javax.application.projectStage}, có vẻ như không có giá trị và tôi cũng đã thử nhiều biến thể khác, không thành công. Tôi thậm chí không quản lý để truy cập vào ProjectStage từ bên trong mã Java (sau đó tôi có thể phơi bày nó bản thân mình với một Bean).

Tôi làm cách nào để truy cập giá trị PROJECT_STAGE bên trong ứng dụng của mình?

Trả lời

24

OK. Từ quan điểm, nó có thể được truy cập như:

<h:outputText value="Stage:#{facesContext.application.projectStage}"/> 

Trong mã này, nó có thể được truy cập như:

FacesContext.getCurrentInstance().getApplication().getProjectStage().toString() 
0

Bạn có thể lấy nó bằng cách sử initParam được xác định trước JSF EL biến

#{initParam['javax.faces.PROJECT_STAGE']} 
+6

Nó sẽ chỉ trả về 'null' khi không có tham số ngữ cảnh nào được xác định. Ngoài ra, nó không bao gồm các trường hợp khi giai đoạn dự án được thiết lập bởi JNDI. Thay vào đó, tôi thích '# {facesContext.application.projectStage}' hơn vì nó trả về giá trị cuối cùng mà thực sự được JSF sử dụng, bất kể nó đã được cấu hình ở đâu. – BalusC

+0

Tôi xác nhận câu trả lời này không hoạt động nếu bạn đặt Giai đoạn dự án bằng JNDI. – LaurentG

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