【问题标题】:How to access javax.faces.PROJECT_STAGE from the view/inside code?如何从视图/内部代码访问 javax.faces.PROJECT_STAGE?
【发布时间】:2011-03-24 19:00:54
【问题描述】:

[我的设置:Java EE 6 应用程序,在 Glassfish 3.0.1 上运行 EJB3.1、CDI/Weld、JSF2]

我刚刚在this page 上阅读了有关 Faces ProjectStage 的信息,这是一件很酷的事情。所以我在我的 Web.xml 中对其进行了配置,将其设置为 Development:

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

现在我想从 JSF 视图访问 ProjectStage(相应地设置特定 UI 组件的可见性)。

因此,我已经尝试了诸如值为#{javax.application.projectStage} 的输出文本之类的东西,它似乎为空,并且我还尝试了许多其他变体,但均未成功。我什至无法从 Java 代码中访问 ProjectStage(然后我可以自己用 Bean 公开它)。

如何在我的应用程序中访问 PROJECT_STAGE 值?

【问题讨论】:

    标签: java jsf jsf-2


    【解决方案1】:

    您可以使用 initParam 预定义的 JSF EL 变量来获取它

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

    【讨论】:

    • 只有在没有定义上下文参数时才会返回null。此外,不包括项目阶段由 JNDI 设置的情况。我更喜欢 #{facesContext.application.projectStage},因为它返回 JSF 实际使用的最终值,无论它在哪里配置。
    • 我确认如果您使用 JNDI 设置项目阶段,此答案将不起作用。
    【解决方案2】:

    知道了。从视图中可以这样访问:

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

    在代码中可以这样访问:

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

    【讨论】:

      【解决方案3】:

      这可能是通过initParam implicit object 暴露的。如果失败,请检查ExternalContext

      【讨论】:

        猜你喜欢
        • 2012-01-21
        • 1970-01-01
        • 2012-01-04
        • 2012-01-05
        • 1970-01-01
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        相关资源
        最近更新 更多