Mhh Anlamadım ... gerçek kodun olayları nasıl tetiklediği nasıl görünüyor? ASFAIK javax.enterprise.event.Event arayüzünü enjekte ettiniz ve buna örnek olarak adlandırılan gözlemciyi ilan eden yangın yöntemine iletiniz. Ve eğer miras söz konusu ise, sizin durumunuzda olduğu gibi, bir DummyEvent'i ateşlerseniz her iki Gözlemci de çağrılır. Olayları daha fazla belirtmek isterseniz, Elemedarları kullanırdınız.
@Inject @Any Event<DummyEvent> dummyEvent;
...
dummyEvent.fire(list.get(i));
/* edit */
"Sorun" aşağıdaki kod satırı: En kısa sürede, etkinliğin türünü (MyEvent.class) specifiy olarak
weld.event().select(MyEvent.class).fire(evt);
, gerçek olay örneğinin türü (evt) artık önemli değil. Bir olasılık, sınıf hiraşinizi Qualifiers ile genişletmektir. Eğer itarate burada sadece bir liste aracılığıyla örnekte olduğu gibi, baz sınıflara erişmek ne zaman sen kesin belirtebilirsiniz, Nihayet
public void observerChild(@Observes @ChildEvent.Child BaseEvent child){
System.out.println("child with annotation event");
}
,: Ör: Bundan sonra
@ChildEvent.Child
public class ChildEvent extends BaseEvent{
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface Child{
}
public void eventAction() {
System.out.println("child");
}
}
ayrıca Gözlemci belirtmek böyle olay ateş önce/eleme yazın:
(aşağıda gösterilmektedir) genel Observer varsa, yukarıda belirtildiği gibi
for (BaseEvent e : list){
childEvent.select(e.getClass().getAnnotations()[0]).fire(e);
}
, her olay için çağrılır.bu servlet tarafından test olarak
public void observerBase(@Observes BaseEvent base){
System.out.println("base event");
}
Hangi CDI Uygulamasını kullanıyorsunuz? –
jboss olarak kaynak yapın 7 –