Domanda

Seam scatterà diversi tipi di eventi che riguardano particolari ambiti, attività o processi e aggiunge il nome dell'ambito, un'attività o un processo al termine dell'evento.

Come faccio ad ascoltare a tutti gli eventi di un tipo?

es. per qualsiasi <name> mi piacerebbe ascoltare eventi come questi:

  • org.jboss.seam.createProcess.<name> - chiamato quando viene creato il processo
  • org.jboss.seam.endProcess.<name> - chiamato quando finisce il processo
  • org.jboss.seam.initProcess.<name> - chiamato quando il processo è associato con la conversazione
  • org.jboss.seam.startTask.<name> - chiamato quando viene avviato il task
  • org.jboss.seam.endTask.<name> - chiamato quando il compito è finito

Ho bisogno di fare questo pur non conoscendo l'elenco dei nomi validi in anticipo ...: - (

Spero di essere con @Observer per creare l'osservatore, o qualcosa di simile, e io ascolto fino a due classi di eventi nello stesso componente.

È stato utile?

Soluzione

Si può facilmente farlo sostituendo classe Eventi di Seam con una propria implementazione. Poi cercare gli eventi che vengono sollevate che iniziano con una particolare stringa:

@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.
   }
}

A questo punto è possibile osservare "org.jboss.seam.createProcess" per ottenere tutti gli eventi CreateProcess.

Altri suggerimenti

All'interno del caso, è necessario scrivere super.raiseEvent (...) altrimenti si otterrà un ciclo infinito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top