Comment JSF 2 ConversationScope travail?
J'ai un JSF facelets page qui affiche un tableau de données en fonction de la page en cours de visualisation. Quand je afficher la page 1, je l'appelle le view()
méthode d'action pour obtenir les données de la base de données pour les pages et les stocker en tant que membre privé domaine de la fève (deux tableaux). J'ai aussi appeler conversation.start()
sur l'injection de conversation instance dans le view()
méthode.
Lorsque l'utilisateur clique sur le bouton "suivant" ( h:commandButton
) pour aller à la page 2, je suis de l'exécution d'une next()
méthode pour mettre à jour la sauvegarde de la fève à la point de l'ensemble 2 de sorte qu'il va imprimer son contenu. Le problème est, tableau 2 n'existe plus. Je ne sais pas pourquoi je perds conversation portée. Des idées?
//tells the object which page we are on, and thus what data to display.
private int part = 1;
//These arrays are filled with data but conversation scope doesn't
//keep them on the next postback.
private int[] part1 = new int[15], part2 = new int[15];
Vous devez vous connecter pour publier un commentaire.
Vous devez coller du code plus afin que nous puissions mieux vous aider.
À partir de ce que vous dites, je ne vois pas où vous avez appelé la méthode pour mettre fin à la conversation(Vous avez besoin que de trop lorsque l'on travaille avec de la conversation de la portée).
Je vais coller ici un petit exemple qui je pense va vous aider à comprendre comment la conversation champ d'application les œuvres:
Ceci est la page de démarrage de l'assistant(Conversation portée est grande pour les assistants)
C'est la deuxième page de l'assistant
Et ceci est la page où le champ se termine
Ici l' @ConversationScoped backing bean qui commence et se termine la conversation
Je pense que cet exemple est très simple et peut vous aider à comprendre comment il fonctionne. Demander si vous ne comprenez pas quelque chose
REMARQUE:
Je pense, mais je ne suis pas sûr à 100% mais ConversationScope ne fonctionne que si le backing bean bean CDI. Cela signifie utilise l'annotation @Nommé. Mieux vérifier qu'.