Je cours Mojarra 2.2.0.Quand est-ce que JSF crée une session et que met-elle dans une carte de session?
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
La méthode d'action gérée de haricot est-
public void action() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
System.out.println(session.getId()); // not null for stateful views
}
Pour stateless
vues session.getId()
lancers francs NPE
Pour les vues qui ne sont pas apatridie Firing une requête GET, il y a JSESSIONID=340041C96D5AA446D761C3602F54A76D
Je l'ai lu here that-
Pour le mécanisme d'économie d'état côté client, JSF ne créera pas la session et mémorise l'état d'affichage dans un champ caché avec le nom javax.faces.ViewState sous la forme chaque fois que nécessaire.
En outre, il est mentionné ici that
JSF autocreate en effet la session parce que l'état d'affichage JSF a être stocké là-bas. Si vous définissez la méthode sauvegarde de l'état JSF client au lieu de serveur, il ne sera pas enregistrée en session et, par conséquent aucune session doit être créé
Je pense que la ligne ci-dessus est une source d'ennuis pour moi.
Si vous définissez la méthode sauvegarde de l'état JSF au client au lieu de serveur, alors il ne sera pas stocké en session // entièrement d'accord
et
donc aucune session doit être créé. // Cela crée une confusion parce que pour le mécanisme d'économie côté client , un identifiant de session est généré par le conteneur de servlet & d'où une session associée à la demande .
En ce qui concerne la discussion que j'eus avec BalusC dans ce question, je créé un HttpSessionListener-
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
Thread.dumpStack();
}
public void sessionDestroyed(HttpSessionEvent event) {
}
}
Voir les screenshots ci-dessous attachés (ces 2 captures d'écran sont pour la version 2.0.3, il faut ont été un vieux bug à cause duquel la session a été créée se) -
@BalusC: Eclipse IDE auto l'a téléchargée pour moi. Je joins la capture d'écran aussi. –
@BalusC: Désolé pour cette erreur idiote. Je pensais que supprimer la bibliothèque 2.0.3 du buildpath va les supprimer complètement. Pour Mojarra 2.2.0, maintenant le même écouteur HttpSession n'est pas appelé. Aucune suggestion? –
@BalusC: Ahh, je vois. Maintenant j'ai compris. Je pense que la source de tout ce problème était le numéro de version. –