Jsf 为什么我不能在另一个bean的构造函数中获得SessionScoped bean的值?
我有一个SessionScoped bean:Jsf 为什么我不能在另一个bean的构造函数中获得SessionScoped bean的值?,jsf,managed-bean,session-scope,Jsf,Managed Bean,Session Scope,我有一个SessionScoped bean: @ManagedBean @SessionScoped public class LoginBean implements Serializable { /** * Creates a new instance of LoginBean */ public LoginBean() { this.usuario = new Usuario(); } private Usuario usuario; //getter & set
@ManagedBean
@SessionScoped
public class LoginBean implements Serializable {
/**
* Creates a new instance of LoginBean
*/
public LoginBean() {
this.usuario = new Usuario();
}
private Usuario usuario;
//getter & setter
}
Usuario类:
public class Usuario {
public Usuario() {
}
private String password;
private String nombre;
private int idPlanta;
private int nivel;
private String idUsuario;
//getters & setters
}
我想从SessionScoped bean(LoginBean)中获取属性idPlanta的值(在构造函数中)请参见注释:
@ManagedBean
@ViewScoped
public class PrincipalBean implements Serializable {
public PrincipalBean() {
System.out.println(this.login.getUsuario().getIdPlanta());
//AT THIS POINT THE VALUE OF idPlanta IS 0 but in the session I have 1...
//Method that uses the idPlanta value as a parameter
}
@ManagedProperty(value = "#{loginBean}")
private LoginBean login;
public LoginBean getLogin() {
return login;
}
public void setLogin(LoginBean login) {
this.login = login;
}
}
但是当我在视图中显示该值时,它会显示会话idPlanta=1中的实际值。我不明白为什么我不能在ViewScoped bean(PrincipalBean)的构造函数中获取该属性的值。我在这里的视图中显示了该值(我知道我可以直接从LoginBean中获取该值,但这只是为了显示PrincipalBean中的属性login具有会话值):
PrincipalBean中Idlanta的值非常重要,因为我使用它作为方法参数,以便在显示视图时显示更多信息
请帮帮我。我仍在学习JSF。在构建bean之后,您需要使用这些值。当您的构造函数被调用时,您的bean还没有初始化——因此注入还没有发生。使用
@PostConstruct
方法,您将能够从注入的对象访问所需的值
例如:
@ManagedBean
@ViewScoped
public class PrincipalBean implements Serializable {
public PrincipalBean() {
}
@PostConstruct
public init() {
System.out.println(this.login.getUsuario().getIdPlanta());
//AT THIS POINT THE VALUE OF idPlanta IS 0 but in the session I have 1...
//Method that uses the idPlanta value as a parameter
}
@ManagedProperty(value = "#{loginBean}")
private LoginBean login;
public LoginBean getLogin() {
return login;
}
public void setLogin(LoginBean login) {
this.login = login;
}
}
另见
@ManagedBean
@ViewScoped
public class PrincipalBean implements Serializable {
public PrincipalBean() {
}
@PostConstruct
public init() {
System.out.println(this.login.getUsuario().getIdPlanta());
//AT THIS POINT THE VALUE OF idPlanta IS 0 but in the session I have 1...
//Method that uses the idPlanta value as a parameter
}
@ManagedProperty(value = "#{loginBean}")
private LoginBean login;
public LoginBean getLogin() {
return login;
}
public void setLogin(LoginBean login) {
this.login = login;
}
}