如何在自定义Converter中访问EJB bean

Tha*_*ham 0 java jsf converter java-ee ejb-3.0

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到了java.lang.NullPointerException,当我进入时getAsObject(),主要原因是因为我的会话Bean sBean为空.我不知道如何解决这个问题,我需要访问我的Session bean,以便我可以从我的数据库中查询

Jör*_*ann 10

正如BalusC所说,注射仅适用于托管豆类.但是,您可以在faces-config中将转换器声明为托管bean

<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>
Run Code Online (Sandbox Code Playgroud)

然后在具有el表达式的jsf组件中引用它:

<h:outputText value="#{myBean.value}" converter="#{myConverter}" />
Run Code Online (Sandbox Code Playgroud)