2010-08-03 29 views
10

[Mi configuración: aplicación Java EE 6, con EJB3.1, CDI/Weld, JSF2 que se ejecutan en GlassFish 3.0.1]¿Cómo acceder a javax.faces.PROJECT_STAGE desde el código de vista/interior?

acabo de leer acerca de la ProjectStage caras en this page, que es una cosa fresca. Así que configuré en mi Web.xml, estableciéndolo en desarrollo:

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

ahora quiero acceder al ProjectStage desde el punto de vista JSF (ajuste de la visibilidad de los componentes específicos de interfaz de usuario en consecuencia).

Por lo tanto, ya probé cosas como un texto de salida con el valor #{javax.application.projectStage}, que parece ser nulo, y también probé muchas otras variantes, sin éxito. Incluso no logro acceder a ProjectStage desde dentro del código Java (entonces podría exponerlo con un Bean).

¿Cómo puedo acceder al valor de PROJECT_STAGE dentro de mi aplicación?

Respuesta

24

Lo tengo. Desde el punto de vista, se puede acceder como:

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

En el código, se puede acceder a ella como:

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

Se puede conseguir usando initParam predefinido variable de JSF EL

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

Solo devolverá 'null' cuando no haya definido ningún parámetro de contexto. Además, no cubre casos cuando la etapa del proyecto ha sido establecida por JNDI. Preferiría el '# {facesContext.application.projectStage}' en su lugar, ya que devuelve el valor final que realmente ha sido utilizado por JSF, independientemente de dónde se haya configurado. – BalusC

+0

Confirmo que esta respuesta no funciona si configura Project Stage usando JNDI. – LaurentG

Cuestiones relacionadas