Как получить доступ к EJB bean, когда внутри настраиваемого конвертера

Этот converter вызывается из моего JSF. Я уже зарегистрировал его внутри faces-config.xml

public class ProjectConverter implements Converter{

    @EJB
    DocumentSBean sBean;

    @ManagedProperty(value="#{logging}")
    private Logging log;    

    public ProjectConverter(){
    }

    public Object getAsObject(FacesContext context, UIComponent component, String value) 
    {
        if(value.trim().equals("")){
            return null;
        }
        return sBean.getProjectById(value);

    }

    public String getAsString(FacesContext context, UIComponent component, Object value) 
    {
        if(value == null){
            return null;
        }
        return String.valueOf(((Project) value).getId());
    }
}

Я столкнулся с java.lang.NullPointerException, когда я нахожусь в getAsObject(), основной причиной является то, что мой сеанс Bean sBean равен null. Я не знаю, как это исправить, мне нужно получить доступ к моей сессии Bean, чтобы я мог запрашивать из своей базы данных

Ответ 1

Как BalusC, впрыск работает только в управляемом beans. Однако вы можете объявить свой конвертер как управляемый bean в ваших лицах-config

<managed-bean>
   <managed-bean-name>myConverter</managed-bean-name>
   <managed-bean-class>com.example.MyConverter</managed-bean-class>
   <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

И позже ссылайтесь на него в компоненте jsf с выражением el:

<h:outputText value="#{myBean.value}" converter="#{myConverter}" />