Jsf 正在尝试使用FacesContext从会话中检索用户
我目前正在尝试从登录的用户那里检索所有数据,以便我可以使用这些数据,例如列出他的电子邮件或联系人,或者修改或添加新的电子邮件或联系人 在开始时,在登录屏幕中,我使用一种方法将该用户置于会话中Jsf 正在尝试使用FacesContext从会话中检索用户,jsf,javabeans,facescontext,Jsf,Javabeans,Facescontext,我目前正在尝试从登录的用户那里检索所有数据,以便我可以使用这些数据,例如列出他的电子邮件或联系人,或者修改或添加新的电子邮件或联系人 在开始时,在登录屏幕中,我使用一种方法将该用户置于会话中 private void putUserInSession(Usuario user) { Map<String, Object> session = FacesContext.getCurrentInstance() .getExternalContex
private void putUserInSession(Usuario user) {
Map<String, Object> session = FacesContext.getCurrentInstance()
.getExternalContext().getSessionMap();
session.put("LOGGEDIN_USER", user);
}
我尝试在会话中为用户设置bean值,但没有显示任何数据
我还尝试在其他bean中检索它,比如在用户帐户中保存给定的电子邮件(因此我需要他或她的ID)
但它的工作方式与前一种情况不同。它会引发异常吗?它是否返回“exito”?你说它不工作是什么意思?没有抛出异常,它返回“exito”。“它不起作用”,我的意思是,在我尝试访问的页面中,登录名、姓名和所有数据都没有填入文本字段,就像我试图调用的对象为空一样。或者,当我试图转到一个页面,其中的数据在表中(如来自给定用户名的电子邮件),那里没有任何数据。我刚刚调试了代码并返回“Usuario”,但所有值都为空、null或0。如果
Usuario
是一个真正的会话范围的托管bean,Usuario.setUsuario(usermodificar)代码>正确设置会话范围的托管bean的值,并且Usuario usermodificar=(Usuario)getObjectFromSession(“LOGGEDIN_USER”)代码>正确地检索存储在会话范围的托管bean中的值,那么它应该正常工作。您可能希望调试/跟踪这些语句,如果它没有按预期工作-上述方法可能无法检索该值-很可能它没有存储到会话范围的bean中,或者使用与LOGGEDIN\u USER
不同的键存储。
public String proceed(){
Usuario usermodificar = (Usuario) getObjectFromSession("LOGGEDIN_USER");
usuario.setUsuario(usermodificar);
return "exito";
}
private Object getObjectFromSession(String key) {
return FacesContext.getCurrentInstance().getExternalContext()
.getSessionMap().get(key);
}
Usuario usuario = (Usuario) getObjectFromSession("LOGGEDIN_USER");