我有这个 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 & 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 具有 Session 值):
<h:outputText class="titulo" value="Bienvenido(a) #{principalBean.login.usuario.nombre} Planta #{principalBean.login.usuario.idPlanta}" />
PrincipalBean 中 idPlanta 的值非常重要,因为我将它用作方法参数,以便在显示视图时显示更多信息。
请帮我。我还在学习JSF。