estoy creando contenedor HttpSession esta manera:HttpSession - cómo obtener la session.setAttribute?
@SessionScoped
@ManagedBean(name="userManager")
public class UserManager extends Tools
{
/* [private variables] */
...
public String login()
{
/* [find user] */
...
FacesContext context = FacesContext.getCurrentInstance();
session = (HttpSession) context.getExternalContext().getSession(true);
session.setAttribute("id", user.getID());
session.setAttribute("username", user.getName());
...
System.out.println("Session id: " + session.getId());
Y tengo que debería SessionListener me da información sobre la sesión creada:
@WebListener
public class SessionListener implements HttpSessionListener
{
@Override
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
System.out.println("Session id: " + session.getId());
System.out.println("New session: " + session.isNew());
...
}
}
¿Cómo puedo obtener el atributo username
?
Si estoy tratando de que el uso de System.out.println("User name: " + session.getAttribute("username"))
se lanza java.lang.NullPointerException
..
modo de sesión o System.out es nulo –
Usando la API Servlet cruda por dentro código JSF está en casi todos los casos un olor código. En este caso particular, ¿por qué no solo usa un bean administrado con ámbito de sesión? – BalusC
No entiendo la pregunta ...? La primera parte del código con 'FacesContext' está en bean gestionado con ámbito de sesión. Voy a editar mi publicación ... ¿Podrías decirme más? – gaffcz