2014-03-12 70 views
0

我有兩個Session Scoped bean。在JavaServer中注入bean beans

import javax.inject.Named; 
import javax.enterprise.context.SessionScoped; 
import java.io.Serializable; 

@Named 
@SessionScoped 
public class PollsBean implements Serializable { 
    private long id; 
    private String title; 
    ...... 
    get... 
    set... 
} 



import javax.enterprise.context.SessionScoped; 
import javax.inject.Inject; 
import javax.inject.Named; 
import java.io.Serializable; 

@Named 
@SessionScoped 
public class ChartBean implements Serializable { 

    @Inject private PollsBean currentPoll; 
    ... 
    public void someMethod(){ 
     Long curid = currentPoll.getId(); 
    } 
} 

因此,當我打開使用PollsBean的頁面時,所有工作正常,所有bean字段都被初始化。之後,我轉到使用ChartBean並調用someMethod()的第二頁,並獲取NullPointerException。爲什麼我不能使用初始化的SessionScoped Bean?

謝謝。

回答

1

確保您的META-INF或WEB-INF文件夾中有beans.xml文件。

http://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

+0

我只空build.xml文件web_war_exploded \ WEB-INF \ classes文件夾 – user2783755

+1

好,必須有WEB-INF文件夾下(可以爲空),一個在beans.xml中的情況下,一個Web應用程序。否則CDI將不會掃描注入點的類路徑。 – Csaba