2012-10-19 41 views
1

我試圖將一個受管Bean注入另一個bean,但失敗。這是第一個bean:將ManagedBean注入到另一個bean失敗

@ManagedBean(name = "sucBean") 
@SessionScoped 
public class SucBean implements Serializable { 

private static final long serialVersionUID = 1L; 

private MapModel advancedModel; 

private MapModel advancedModel2; 

private Marker marker; 

private Suc suc; 

private List<Suc> sucDefteri; 

private List<Suc> searchResult; 

private Suc[] selectedSuc; 

private SucService sucService; 

private String aramaKriteri; 

private String arananKelime; 

private SucDataModel sucModel; 

    // other getters/setters methods 

當我運行Web應用程序,我得到了

Caused by: java.lang.NullPointerException 
at org.primefaces.component.chart.CartesianChart.getCategories(CartesianChart.java:32) 
at org.primefaces.component.chart.bar.BarChartRenderer.encodeData(BarChartRenderer.java:121) 
at org.primefaces.component.chart.bar.BarChartRenderer.encodeScript(BarChartRenderer.java:51) 
at org.primefaces.component.chart.bar.BarChartRenderer.encodeEnd(BarChartRenderer.java:36) 
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 

第二個bean是以下幾點:

@ManagedBean(name="chartBean") 
@SessionScoped 
public class ChartBean implements Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

private CartesianChartModel categoryModel; 

@ManagedProperty("#{sucBean}") 
private SucBean sucBean; 

private int[] sucSayilari=new int[9]; 


public ChartBean() 
{ 
    createCategoryModel(); 
} 
+0

您可以發佈您的類的完整代碼? – ElderMael

回答

3

我認爲這是問題:

public ChartBean() 
{ 
    createCategoryModel(); 
} 

您的依賴關係是因爲JSF實現首先實例化你的bean(這意味着構造函數必須完成),然後注入它的依賴關係,所以如果你在createCategoryModel()中使用注入的bean,它將是一個空引用。

如果您需要依賴後設置使用具有@PostConstruct anotated的方法做一些與你的bean:

public ChartBean(){ 
} 

@PostConstruct 
public void init(){ 
    createCategoryModel(); 
} 
+0

非常感謝@ mael。你的帖子對我來說非常有用。 – yns89

相關問題