1

Managed Bean を別の Bean に注入しようとしましたが、失敗しました。それが最初の 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)

2 番目の 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();
}
4

1 に答える 1

3

これが問題だと思います:

public ChartBean()
{
    createCategoryModel();
}

この時点では依存関係は設定されていません。JSF 実装は最初に Bean をインスタンス化し (つまり、コンストラクターが終了する必要があることを意味します)、次にその依存関係を注入するため、注入された Bean を使用している場合はcreateCategoryModel()null 参照になります。

依存関係が設定された後にBeanで何かをする必要がある場合は、次の注釈が付けられたメソッドを使用します@PostConstruct

public ChartBean(){
}

@PostConstruct
public void init(){
   createCategoryModel();
}
于 2012-10-19T14:36:57.910 に答える