3 votes

PhaseListener personnalisé appelé deux fois dans jsf 2

Je travaillais avec le PhaseListener de JSF 2.0. Mais ses méthodes sont appelées deux fois à chaque fois.

@Override
public void beforePhase(PhaseEvent arg0) {
    System.out.println("Start Phase "+arg0.getPhaseId()+" here the value "+ ++i +" object "+this);  
}

et la sortie est comme ceci

Start Phase RESTORE_VIEW 1 here the value 1 object com.phaseListener.MyPhaseListener@cc8c29
Start Phase RESTORE_VIEW 1 here the value 1 object com.phaseListener.MyPhaseListener@106054a

chaque fois qu'il est appelé par deux objets différents.

S'il vous plaît, dites-moi pourquoi il en est ainsi ?

5voto

Etienne Dufresne Points 251

Au cas où cela aiderait quelqu'un qui chercherait ce problème sur Google.

Dans mon cas, je suis passé de Glassfish 3 à Tomcat 7 et j'ai remarqué que mon écouteur de phase personnalisé était enregistré deux fois, ce qui provoquait des entrées de journal en double.

Dans mon web.xml, j'avais un ConfigureListener qui était requis pour Glassfish 3 mais qui déclenche un second enregistrement sur Tomcat 7 :

<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

J'ai simplement supprimé ce bloc et cela a résolu le problème.

1voto

BalusC Points 498232

C'est parce que vous avez enregistré votre écouteur de phase deux fois dans l'application JSF. Le "pourquoi" de cette situation ne peut pas être expliqué de manière contraignante. Si vous êtes gêné par le fait que le même écouteur de phase soit enregistré deux fois, supprimez simplement le deuxième enregistrement.

0voto

Azfar Niaz Points 453

Ce problème apparaît si vous utilisez Tomcat 7.0.4x. Essayez de rétrograder Tomcat à au moins 7.0.39 ou moins. Le problème a de grandes chances d'être résolu. Je ne sais toujours pas pourquoi, mais cela fonctionne. J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X