如何在自定义Converter中访问EJB bean [英] How do I access EJB bean when inside a custom Converter
问题描述
从我的JSF调用此转换器
。我已在 faces-config.xml
This converter
is called from my JSF. I already register it inside 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
为空。我不知道如何解决这个问题,我需要访问我的Session bean,以便我可以从我的数据库中查询
I ran into java.lang.NullPointerException
, when I am in getAsObject()
, the primary reason is because my Session Bean sBean
is null. I dont know how to fix this, I need to access to my Session bean so that I can query from my database
推荐答案
As BalusC 说,注入仅适用于托管bean。但是,您可以在faces-config中将转换器声明为托管bean
As BalusC said, injection only works in managed beans. You can however declare your converter as a managed bean in your faces-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>
稍后在带有el表达式的jsf组件中引用它:
And later reference it in a jsf component with an el expression:
<h:outputText value="#{myBean.value}" converter="#{myConverter}" />
这篇关于如何在自定义Converter中访问EJB bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!