كيف يمكنني الاستماع إلى جميع الأحداث السياقية التماس مع أسماء معلمة؟

StackOverflow https://stackoverflow.com/questions/553157

سؤال

سوف التماس النار أنواع مختلفة من الأحداث يتصل هذا بندات أو مهام أو عمليات معينة وإلحاق اسم النطاق أو المهمة أو العملية إلى نهاية الحدث.

كيف أستمع إلى جميع أحداث النوع؟

على سبيل المثال لأي <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> - دعا عند انتهاء المهمة

ولست بحاجة للقيام بذلك على الرغم من عدم معرفة قائمة الأسماء الصحيحة صريح... :-(

آمل أن أستخدم Robserver لإنشاء المراقب، أو شيء مشابه، وسوف أستمع إلى فصول حدثين في نفس المكون.

هل كانت مفيدة؟

المحلول

يمكنك بسهولة القيام بذلك عن طريق استبدال فئة أحداث التماس مع التنفيذ الخاص بك. ثم ابحث عن الأحداث التي يتم رفعها التي تبدأ بسلسلة معينة:

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

نصائح أخرى

داخل إذا، يجب أن تكتب Super.raiseevent (...) وإلا فسوف تحصل على حلقة لا حصر لها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top