我目前正在构建一个应用程序,其中(客户)需求是Java EE和JSF(Primefaces)作为前端。
在这个应用程序中,我需要创建一个包含几个步骤的向导。因此,我创建了一个支持几个步骤信息的支持bean和一个处理表单中的点击和操作的控制器,因此强烈依赖于Bean。
问题是,每次调用控制器时都会重新创建Bean,尽管注释为Sessionscoped。因此,我得到了nullpointers,因为我期望启动的字段保持为null。
这是bean代码的一部分:
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import java.io.Serializable;
@SessionScoped
@Named
/**
* A placeholder for all the information needed in the wizard.
*/
public class WizardBean implements Serializable {
这是控制器代码的一部分:
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import java.io.IOException;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
@ManagedBean(name = "registerInvestigationController")
@SessionScoped
public class WizardController implements Serializable {
private static final long serialVersionUID = 3327044905245768948L;
private static final Logger LOGGER = LoggerFactory.getLogger(WizardController.class);
@Inject
private WizardBean wizardBean;
知道我做错了吗?