2010-08-03 5 views
10

[내 설정 : 자바 EE 6 응용 프로그램, EJB3.1과는 CDI/용접, JSF2은 글래스 피시 3.0.1에서 실행]뷰/내부 코드에서 javax.faces.PROJECT_STAGE에 액세스하는 방법은 무엇입니까?

난 그냥 멋진 일이 this page에 얼굴의 ProjectStage에 대해 읽어보십시오.

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

지금 내가 (특정 UI 구성 요소의 가시성 따라 설정)을 JSF 뷰에서 ProjectStage에 액세스하려면 : 그래서 난 개발로 설정, 내 web.xml에 그것을 구성.

따라서 나는 이미 null 인 것처럼 보이는 값이 #{javax.application.projectStage} 인 outputtext와 같은 것들을 시도했고, 다른 많은 변형도 시도했지만 성공하지 못했습니다. 심지어 Java 코드 내에서 ProjectStage에 액세스하는 것을 관리하지도 않습니다. 그런 다음 Bean으로 직접 노출 할 수 있습니다.

내 애플리케이션에서 PROJECT_STAGE 값에 액세스하려면 어떻게해야합니까?

답변

24

알 수 있습니다. 뷰에서이 같은 액세스 할 수 있습니다

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

당신은 인 initParam 미리 정의 된 JSF EL 변수

#{initParam['javax.faces.PROJECT_STAGE']} 
를 사용하여 얻을 수 있습니다 : 코드에서

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

, 그것은처럼 액세스 할 수 있습니다

+6

컨텍스트 매개 변수가 정의되어 있지 않은 경우에만 'null'을 반환합니다. 또한 프로젝트 단계가 JNDI에 의해 설정된 경우는 다루지 않습니다. '# {facesContext.application.projectStage}'대신 JSF가 실제로 사용 된 최종 값을 반환하기 때문에 (# {facesContext.application.projectStage}를 선호합니다. – BalusC

+0

JNDI를 사용하여 Project Stage를 설정 한 경우이 대답이 작동하지 않는다고 확인합니다. – LaurentG

관련 문제