2012-02-01 3 views
0

J'essaie d'utiliser l'implémentation de CDI Weld, sur un JBoss AS 7, et dans une application JSF 2. 0.Weld + JSF 2.0 @ConversationScoped ne conserve pas l'état

Le fait est que mon bean @ConversationSconed @Named ne semble pas garder son état lorsque je commence la conversation. Pour ce faire, j'utilise simplement un compteur, que j'incrémente chaque fois que je clique sur un bouton de commande, en utilisant Primefaces et Ajax. Le beans.xml est présent dans le classpath (META-INF, WEB-INF ...), et je veux juste préciser qu'avec un bean @SessionScoped ou un @ManagedBean @ViewScoped, ça marche très bien!

Mais je préfère utiliser @ConversationScoped et rester avec un bean @Named, plutôt que d'utiliser @ManagedBean.

Peut-être que je dois faire pour la configuration additionaly JBoss AS 7 ou dans le web.xml, je ne sais pas ...

Voici mon haricot @ConversationScoped:

@Named 
@ConversationScoped 
public class ConversationTest implements Serializable { 
    private int counter; 

    @Inject 
    private Conversation conversation; 

    public void startConversation() { 
     System.out.println(counter); 

     counter++; 

     if(conversation.isTransient()) 
      conversation.begin(); 
    } 

    public void stopConversation() { 
     if (!conversation.isTransient()) 
      conversation.end(); 
    } 

    public int getCounter() { 
     return counter; 
    } 

    public void setCounter(int counter) { 
     this.counter = counter; 
    } 
} 

Et ici est le contenu de ma page xhtml:

<h:form prependId="false"> 
     <h:panelGroup id="tests"> 
      <h:outputText value="#{conversationTest.counter}" /> <br/> 
      <h:outputText value="Test : #{conversationTest.testHello}" /> <br/><br/> 
     </h:panelGroup> 

     <p:commandButton 
       value="Start !" 
       actionListener="#{conversationTest.startConversation}" 
       update="tests" /> 
     <br/> 

     <p:commandButton 
       value="Stop !" 
       actionListener="#{conversationTest.stopConversation}" 
       update="tests" /> 
    </h:form> 

Qu'est-ce que je fais mal? Suis-je en train d'oublier quelque chose?

Merci beaucoup pour vos réponses!

+0

Je ne suis pas sûr de ce que vous entendez par "ne conserve pas l'état"? Quel est le résultat que vous attendez et que se passe-t-il? –

+0

Quand je clique sur le bouton, je saute que le nombre conversationTest.counter est incrémenté, mais ce n'est pas le cas. – Zarkus13

Répondre

0

Avez-vous essayé d'utiliser le standard h: commandButton au lieu de PrimeFaces? Si le PrimeFaces utilise AJAX (ce dont je me souviens bien), vous devrez peut-être envoyer l'identifiant de la conversation en paramètre.

+0

Merci pour votre réponse! Je vais essayer d'utiliser h: commandButton et vous informer sur le résultat;) – Zarkus13