문제

이음새가 발사됩니다 다른 종류의 이벤트 이는 특정 범위, 작업 또는 프로세스와 관련이 있으며 이벤트가 끝날 때까지 범위, 작업 또는 프로세스의 이름을 추가합니다.

유형의 모든 이벤트를 어떻게 듣나요?

예를 들어 <name> 다음과 같은 이벤트를 듣고 싶습니다.

  • org.jboss.seam.createProcess.<name> - 프로세스가 생성 될 때 호출됩니다
  • org.jboss.seam.endProcess.<name> - 프로세스가 끝날 때 호출됩니다
  • org.jboss.seam.initProcess.<name> - 프로세스가 대화와 관련이있을 때 호출
  • org.jboss.seam.startTask.<name> - 작업이 시작될 때 호출됩니다
  • org.jboss.seam.endTask.<name> - 작업이 종료 될 때 호출됩니다

나는 이것을해야한다 유효한 이름 목록을 모르지만 앞서 ... :-(

@observer를 사용하여 관찰자 또는 비슷한 것을 만들고 싶습니다. 같은 구성 요소에서 최대 두 개의 이벤트 클래스를들을 것입니다.

도움이 되었습니까?

해결책

Seam의 이벤트 클래스를 자신의 구현으로 대체하여 쉽게 수행 할 수 있습니다. 그런 다음 특정 문자열로 시작하는 이벤트를 찾으십시오.

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

이제 "org.jboss.seam.createprocess"를 관찰하여 모든 CreateProcess 이벤트를 얻을 수 있습니다.

다른 팁

IF 내부에는 super.raiseevent (...)를 작성해야합니다. 그렇지 않으면 무한 루프가 생깁니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top