Как получить доступ к 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}" />