2010-08-03 3 views
10

[My Setup: applicazione Java EE 6, con EJB3.1, CDI/Weld, JSF2 esecuzione su Glassfish 3.0.1]Come accedere a javax.faces.PROJECT_STAGE dalla vista/codice interno?

Ho appena letto la ProjectStage Faces su this page, che è una cosa interessante. Così ho configurato nel mio Web.xml, impostandolo a Sviluppo:

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

Ora voglio accedere al ProjectStage dalla vista JSF (impostazione della visibilità dei componenti dell'interfaccia utente specifici di conseguenza).

Quindi ho già provato cose come un testo di output con il valore #{javax.application.projectStage}, che sembra essere nullo, e ho anche provato molte altre varianti, senza successo. Non riesco nemmeno ad accedere a ProjectStage da codice Java (quindi potrei esporlo da solo con un bean).

Come posso accedere al valore PROJECT_STAGE all'interno della mia applicazione?

risposta

24

Capito. Dal punto di vista, è possibile accedervi come:

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

Nel codice, è possibile accedervi come:

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

Si può ottenere usando initParam predefinito variabile JSF EL

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

Restituisce solo "null" quando non è definito alcun parametro di contesto. Inoltre, non copre i casi in cui la fase del progetto è stata impostata da JNDI. Preferirei il '# {facesContext.application.projectStage}' invece come restituisce il valore finale che è stato effettivamente utilizzato da JSF, indipendentemente da dove è stato configurato. – BalusC

+0

Confermo che questa risposta non funziona se si imposta Project Stage utilizzando JNDI. – LaurentG