jsf - @Produces 返回 FacesContext --- 为什么?

标签 jsf glassfish facelets cdi jboss-weld

我犹豫再问一个关于同一主题的问题,但至少现在我正在阅读,我认为是正确的 docs .

所以,这个类:

class FacesContextProducer {
   @Produces @RequestScoped FacesContext getFacesContext() {
      return FacesContext.getCurrentInstance();
   }
}

来自 weld docs事实上,这种方法确实适用于 Glassfish:GlassFish is using WELD as the reference implementation for JSR-299: Java Contexts and Dependency Injection for the Java EE platform (CDI).

对于上面的类,它会在哪里使用?为什么需要一个单独的类来@Produces 一个 FacesContext?

最佳答案

For the above class, where would it be used? Why is he trying to inject FacesContext?



我认为这要么是为了
  • 一致性;或
  • 测试。

  • ad 1. 如果尝试做纯 CDI,当你不使用其他依赖查找机制(如 getCurrentInstace() 静态方法)时,它看起来不错。请注意,实际上不需要定义生产者和使用注入(inject)。它只是方便且与 CDI 的用法一致。

    广告 2. 由 McDowell 博客链接解释,想象一下注入(inject)是用 CDI 完成的。

    Why do you need a separate class which @Produces a FacesContext?



    这不需要是一个单独的类,您可以让单个类产生多个 bean。它只是有助于代码的清晰度将其分开。

    关于jsf - @Produces 返回 FacesContext --- 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066610/

    相关文章:

    jsf - Seam 条件渲染而不解析

    css - 右对齐 panelGrid 嵌套在另一个内部

    Java/JAX-WS : Calling webservice works locally, 在 glassfish 上失败。身份验证问题 (SP0105)

    java - 如果未提供范围,为什么 Glassfish 不会启动失败但 Tomcat 会启动?

    jsf - Primefaces 命令按钮未更新数据表。是否需要更新属性

    ajax - 我无法以另一种形式更新数据表

    java - 如何使用 Maven Eclipse 和 glassfish 调试 Web 应用程序?

    java - 向复合组件添加操作方法

    jsf - 如何在jsf页面中设置bean属性值?

    jsp - 如何在 Facelets 页面中包含 JSP 页面?