Обыскивая в Интернете, я обнаружил, что должна быть возможность @ Inject некоторых удобных JSF-объектов в bean-объекты CDI, эти объекты должны быть произведены JSF и представлены через Qualifiers в javax.faces.annotation. * (Например, @RequestMap или @ SessionMap).
Однако я не могу @ Inject эти ресурсы в CDI Beans. Даже инъекция ExternalContext
или FacesContext
завершается неудачно, что, как указано в спецификации JSF 2.3, должно быть возможно для @Inject, а также:
@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;
Ошибка при запуске приложения:
Неудовлетворенные зависимости для типа FacesContext с квалификаторами @Default
в точке внедрения [BackedAnnotatedField] @Inject report.SimpleRequestParamReportProvider.facesContext
Я использую JBoss EAP 7.2 , который соответствует JSF 2.3 https://access.redhat.com/articles/113373
Кто-нибудь еще сталкивался с этой же проблемой? Что-то мне не хватает?
EDIT
Вот WEB-INF /face-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>
EDIT 2 : внедрение объектов JSF работает после добавления аннотированного Java-класса @FacesConfig:
@FacesConfig(version = FacesConfig.Version.JSF_2_3)
public class FacesActivator {}