2012-04-23 48 views
0

在我managedBeanfileUpload:我打電話使用@ManagedProperty其他beans所示的代碼,現在後來在我的課,我有類似rtParser.getQuote()但它拋出NullPointerException,我的問題是:JSF:如何初始化使用@managedProperty傳遞給我的managedBean的bean?

我怎樣才能在初始化rtParser這個班?

@ManagedProperty(value = "#{rtParser}") 
private PositionParserRT rtParser; 

public PositionParserRT getRtParser() 
{ 
    return rtParser; 
} 

public void setrtParser(PositionParserRT rtParser) 
{ 
    this.rtParser = rtParser; 
} 

更新

我有類似此類問題here,並會高度讚賞任何建議。

回答

1

您使用@ManagedProperty的方式預計PositionParserRT也是@ManagedBean。所以把這個註釋放在課堂上。

@ManagedBean 
@SomeScoped // TODO: Choose the suitable scope. 
public class PositionParserRT { 
    // ... 
} 

但是,如果這門課已經不是一個JSF擺在首位託管bean(即它沒有任何做與JSF的意見/模型),那麼你可能找錯了方向的解決方案。如果它是一個業務服務,而不是使它成爲@StatelessEJB,而是通過@EJB注入它。

@Stateless 
public class PositionParserRT { 
    // ... 
} 

@EJB 
private PositionParserRT rtParser; 
+0

我'PositionParserRT'不是一個EJB,它僅僅是一個正常的解析器解析文件,然後調用其他類做一些更多的處理,我不知道如何註冊他們因爲我需要從managedBean中的facesContext以及解析器和contractMapping類中獲取會話 – Rachel 2012-04-23 17:51:17

+0

那麼,如果它不代表業務服務,那麼就自己構建它。您可以只將該會話作爲構造函數參數傳遞。我只是想知道那是什麼功能要求,因爲這是臭的。您應該讓分析器返回一些數據,並讓後臺bean操作方法根據返回的數據自行處理必要的會話操作。 – BalusC 2012-04-23 17:58:26

+0

當我們說支持bean時,我們指的是managedBean,對吧? – Rachel 2012-04-23 18:00:33

相關問題