Sto creando contenitore HttpSession in questo modo:HttpSession - come ottenere 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());
E devo SessionListener che dovrebbe mi dà informazioni sessione creata:
@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());
...
}
}
Come posso ottenere l'attributo username
?
Se sto cercando utilizzando System.out.println("User name: " + session.getAttribute("username"))
getta java.lang.NullPointerException
..
così sessione o System.out è nulla –
Utilizzo API Servlet grezzo all'interno codice JSF è in quasi tutti i casi un codice odore. In questo caso particolare, perché non usi solo un bean gestito con scope di sessione? – BalusC
Non capisco la domanda ...? La prima parte del codice con 'FacesContext' è in bean gestito con scope di sessione. Ho intenzione di modificare il mio post .. Potresti dirmi di più? – gaffcz