2009-02-16 5 views
2

Seam lancera different kinds of events en rapport avec des étendues, des tâches ou des processus particuliers et ajoutera le nom de la portée, de la tâche ou du processus à la fin de l'événement.Comment écouter tous les événements contextuels Seam avec des noms paramétrés?

Comment écouter tous les événements d'un type?

Par ex pour tout <name> Je voudrais écouter des événements tels que ceux-ci:

  • org.jboss.seam.createProcess.<name> - appelée lorsque le processus est créé
  • org.jboss.seam.endProcess.<name> - appelée lorsque le processus se termine
  • org.jboss.seam.initProcess.<name> - appelé lorsque le processus est associé la conversation
  • org.jboss.seam.startTask.<name> - appelé lorsque la tâche est lancée
  • org.jboss.seam.endTask.<name> - appelée lorsque la tâche est terminée

que je dois faire ce dépit de ne pas connaître la liste des noms valides à l'avant ... :-(

J'espère être en utilisant @Observer pour créer l'observateur, ou quelque chose de semblable, et je écouter jusqu'à deux classes d'événements dans le même composant.

Répondre

4

Vous pouvez facilement le faire en remplaçant la classe Evénements de Seam par votre propre implémentation. Ensuite, regardez pour les événements qui sont soulevées qui commencent par une chaîne particulière:

@Scope(ScopeType.STATELESS) 
@BypassInterceptors 
@Name("org.jboss.seam.core.events") 
@Install(precedence=APPLICATION) 
public class Events extends org.jboss.seam.core.Events 
{ 
    @Override 
    public void raiseEvent(String type, Object... parameters) 
    { 
     super.raiseEvent(type, parameters); 

     if (type.startsWith("org.jboss.seam.createProcess")) 
     { 
      super.raiseEvent("org.jboss.seam.createProcess", parameters); 
     } 
     //etc. 
    } 
} 

Vous pouvez maintenant observer « org.jboss.seam.createProcess » pour obtenir tous les événements CreateProcess.

2

A l'intérieur de l'if, vous devez écrire super.raiseEvent (...) sinon vous aurez une boucle infinie.

+0

Merci! J'ai mis à jour ma réponse – mtpettyp

+0

Voté vers le bas, peut sembler dur mais il me fait mal de voir un nouvel utilisateur (ish) se rep pour poster une réponse qui aurait dû être un commentaire. –

+0

Oui, cela aurait dû être un commentaire –

Questions connexes