在网上搜索时,我发现应该可以将一些方便的 JSF 对象 @Inject 到 CDI bean 中,这些对象应该由 JSF 生成并通过 javax.faces.annotation.* 中的限定符公开(如 @RequestMap 或 @SessionMap)。
但是,我无法将这些资源 @Inject 到 CDI Bean 中。即使注入ExternalContext
或FacesContext
失败,如 JSF 2.3 规范中所述,也应该可以 @Inject 以及以下内容:
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 …