2014-10-10 68 views
1

我试图让这样一个会话范围managedbean:JSF不能得到会话范围managedbean另一个managedbean

@ManagedBean 
@SessionScoped 
@SuppressWarnings("serial") 
public class LoginBean implements Serializable{ 
...... 
} 

@ManagedBean 
@SessionScoped 
public class MenuBean implements Serializable{ 
@ManagedProperty(value="#{loginBean}") 
private LoginBean login;  
public void setLogin(LoginBean login) { 
this.login = login; 
} 

public LoginBean getLogin() { 
return login; 
} 

... 
} 

但MenuBean使用loginBean总是空,我能是做错了什么?你能帮我吗?

在此先感谢。

问候。

+3

首先确保您从'javax.faces。*'包中导入了范围注释。然后还确认'LoginBean'实际上正在实例化(即没有初始化相关的例外日志等) – kolossus 2014-10-11 03:47:32

+0

您好,是我的导入如下所示:import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; 也尝试在这样的会话中获取bean: FacesContext context = FacesContext.getCurrentInstance(); loginBean login =(LoginBean)context.getApplication()。evaluateExpressionGet(context,“#{loginBean}”,LoginBean.class); 如果我这样做,我可以得到与ManagedProperty的豆我不能Thx 4你的帮助 – Mariah 2014-10-13 14:24:51

+0

在什么时候你想要访问'loginBean'你得到空?不是构造函数是啊? – kolossus 2014-10-13 17:08:33

回答

1

注入资源立即发生成功构建,因此,您无法在构建bean之前或构建过程中使用注入字段。因此,需要@PostConstruct。注入的属性可用于在@PostConstruct方法中使用(其施工后立即执行,则邮政@PostConstruct

相关

+0

许多感谢Kolossus! ü保存我的一天! – Mariah 2014-10-13 20:24:17

相关问题