小编jfe*_*fer的帖子

无法在 CDI @RequestScoped 托管 Bean 中注入ExternalContext 或 RequestParam

在网上搜索时,我发现应该可以将一些方便的 JSF 对象 @Inject 到 CDI bean 中,这些对象应该由 JSF 生成并通过 javax.faces.annotation.* 中的限定符公开(如 @RequestMap 或 @SessionMap)。

但是,我无法将这些资源 @Inject 到 CDI Bean 中。即使注入ExternalContextFacesContext失败,如 JSF 2.3 规范中所述,也应该可以 @Inject 以及以下内容:

  • javax.faces.application.ResourceHandler
  • javax.faces.context.Flash

  • javax.servlet.http.HttpSession <-- 这个正在工作

@RequestScoped
public class SimpleRequestParamReportProvider implements ReportParamsProvider {
    @Inject // <-- FAILS
    ExternalContext externalContext;

    @Inject // <-- FAILS
    FacesContext facesContext;

    @Inject @RequestMap // <-- FAILS
    Map<String, Object> requestMap;

    @Inject // <-- WORKS
    HttpSession httpSession;
Run Code Online (Sandbox Code Playgroud)

应用程序启动时显示错误:

在注入点 [BackedAnnotatedField] @Inject report.SimpleRequestParamReportProvider.facesContext 处带有限定符 @Default 的 FacesContext 类型的依赖关系不满足

我正在使用JBoss …

jboss cdi weld jsf-2.3 java-ee-8

5
推荐指数
0
解决办法
1351
查看次数

标签 统计

cdi ×1

java-ee-8 ×1

jboss ×1

jsf-2.3 ×1

weld ×1