2010-09-02 33 views
0

這個converter是從我的JSF調用的。我已經內faces-config.xml如何在自定義轉換器中訪問EJB bean

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爲空。我不知道如何解決這個問題,我需要訪問我的會話bean,以便我可以從我的數據庫查詢

回答

10

由於BalusC表示,注入只能在託管的bean中起作用。但是你可以聲明你的轉換器在你的託管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> 

,後來與一個EL表達式引用它的JSF組件:

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

uhmmm,這很有意思,我會努力那。非常感謝:D +1 – 2010-09-02 21:17:51

+1

是否符合您的經驗?我沒有嘗試過(這裏沒有EJB),但是這應該在*理論中起作用,但是我已經看到資源確認這是行不通的。或者它必須依賴於如何在視圖中設置轉換器的方式。 – BalusC 2010-09-02 21:32:50

+1

@BalusC:這實際上有效。我測試它,它確實對我有用。 – 2010-09-02 21:55:21

相關問題