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

Jboss 无法在CDI@RequestScope托管Bean中注入ExternalContext或RequestParam,jboss,cdi,weld,jsf-2.3,java-ee-8,Jboss,Cdi,Weld,Jsf 2.3,Java Ee 8,在web上搜索时,我发现可以将一些方便的JSF对象@注入CDIBeans,这些对象应该由JSF生成,并通过javax.faces.annotation.*中的限定符公开(如@RequestMap或@SessionMap) 但是,我无法将这些资源@injected到CDIBeans中。甚至注入ExternalContext或FacesContext也会失败,正如JSF 2.3-spec中所述,这应该可以@Inject以及以下内容: javax.faces.application.Resource

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

但是,我无法将这些资源@injected到CDIBeans中。甚至注入
ExternalContext
FacesContext
也会失败,正如JSF 2.3-spec中所述,这应该可以@Inject以及以下内容:

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


  • javax.servlet.http.HttpSession当您实际上没有使用JSF 2.3+时(即,当您认为您使用的是JSF 2.3,但环境/构建实际上没有正确配置时),将引发此异常。但是,在目前提供的信息中看不到该问题的原因。所以这个问题无法回答。可能的原因之一是您没有在JBoss EAP 7.2中安装/激活JSF 2.3。另一个可能的原因是您忘记在faces-config.xml和/或
    @FacesConfig
    trigger.Hi@BalusC中设置JSF2.3标志。谢谢你的回答!我用我的应用程序正在使用的faces-config.xml更新了我的问题。是否有一个标志我在那里丢失激活JSF2.3?@BalusC你的评论为我指明了正确的方向。我没有意识到需要一个
    @FacesConfig
    激活器,它似乎已经解决了注入问题。有没有一种方法可以从faces-config.xml激活,而不需要
    @FacesConfig
    ?谢谢。为了防止它对某人有帮助,我可以使用
    FacesContext
    FacesContext.getCurrentInstance().getExternalContext()
    @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;
    
    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"
        version="2.3">
    </faces-config>
    
    @FacesConfig(version = FacesConfig.Version.JSF_2_3)
    public class FacesActivator {}