Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF2.0CDI&x2B;Spring 3.1集成,FacesContext在部署时为空_Java_Spring_Jsf - Fatal编程技术网

Java JSF2.0CDI&x2B;Spring 3.1集成,FacesContext在部署时为空

Java JSF2.0CDI&x2B;Spring 3.1集成,FacesContext在部署时为空,java,spring,jsf,Java,Spring,Jsf,当我运行我的项目时,Spring在部署时调用PostConstructJSF动作Bean方法(我认为是在springbean创建期间) 正如我所想,在部署时没有FacesCOntext,我在PostConstruct方法中得到NullPointerException import javax.inject.Named; import org.omnifaces.cdi.ViewScoped; @Named @ViewScoped public class AddStudentActionB

当我运行我的项目时,Spring在部署时调用
PostConstruct
JSF动作Bean方法(我认为是在springbean创建期间)

正如我所想,在部署时没有
FacesCOntext
,我在
PostConstruct
方法中得到
NullPointerException

import javax.inject.Named;  
import org.omnifaces.cdi.ViewScoped;

@Named
@ViewScoped
public class AddStudentActionBean implements Serializable {
    private Student student;

    @PostConstruct
    public void init() {
        student = (Student) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Student");
    }

    @PreDestroy
    public void destory() {

    }
}

如何解决呢

不要让
Spring
创建
AddStudentActionBean
类的bean。我的意思是,这样做没有意义
CDI
容器将在需要时创建和管理
AddStudentActionBean
bean


通常,您希望在
Spring
的上下文中创建
Service
DAO
bean。

如果是这样,我不能
omnifaces
ViewScoped
。您仍然可以使用
omnifaces的
@ViewScoped
,因为这个bean是由
CDI容器管理的,而不是
Spring
。没有EJB,Spring,我可以使用
@Name
?当然可以,
javax.inject的@Named.Named
是一个CDI注释。与Spring或EJB无关。JSF说找不到
addStudentActionBean
ActionBean