jfe*_*fer 5 jboss cdi weld jsf-2.3 java-ee-8
在网上搜索时,我发现应该可以将一些方便的 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 EAP 7.2,它符合 JSF 2.3 https://access.redhat.com/articles/113373
还有其他人遇到过同样的问题吗?我有什么遗漏的吗?
编辑 这是我正在使用的 WEB-INF/faces-config-xml
<?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>
Run Code Online (Sandbox Code Playgroud)
编辑 2:一旦我添加 @FacesConfig 注释的 java 类,JSF 对象的注入就可以工作:
@FacesConfig(version = FacesConfig.Version.JSF_2_3)
public class FacesActivator {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1351 次 |
| 最近记录: |