java - JSF 2.0 CDI + Spring 3.1 集成,FacesContext 在部署时为 null

标签 java spring jsf

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

正如我所想,部署时没有 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 的上下文中创建 ServiceDAO bean。

关于java - JSF 2.0 CDI + Spring 3.1 集成,FacesContext 在部署时为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21281803/

相关文章:

java - Spring JdbcTemplate : Getting Lists Not Mapped to an Object

jsf - 提交包含来自其他表单 JSF 的数据的表单

java - spring rest Controller 中 json 验证中强制属性的注释

java - 将数组排序为三个不同的 ArrayLinearList

java - 为什么 Spring 的事务管理不适用于此配置?

java - spring中TaskExecutor的用途是什么?

java - spring-session是否用HttpSession保存bean?

java - 在 jar 中找不到带注释的自定义 JSF2 组件

Java流不将List的所有值放入HashMap

java - 使用鼠标绘制平移图 - Jfreechart