Aynı olaya birden fazla Sunum "dinlemeyi" deniyorum, ancak her etkinliği Presenter'a özgü hale getireceğim.Çoklu ekli gwt widget'ları için olayları ayırt etme
Ex. Her birinde farklı bir sekmede 3 Kompozit pencere öğesi oluşturuyorum. Hepsi aynı olaya bağlanarak bağlanırlar. Buna "NewPrescriptionEvent" diyelim. Bu olay tetiklenirse, tüm 3 bileşiğim iş için DO'u deneyecektir. Ben sadece onlardan birini yapmasını istiyorum.
Bunu yapmamın tek yolu, olaya yanıt vermeye çalışan her bir widget'ı kontrol ettiğim bir geçici etkinlik kimliği (olayın içinde bir tam sayı) oluşturarak.
Kod her zamanki yapmak bağlama sırasında
private class OnNewPrescription implements NewPrescriptionHandler {
@Override
public void onNewPrescription(NewPrescriptionEvent event, int dataObjectId) {
if (getDataObject().getPatientId() == dataObjectId) {
...
}
}
}
pasajı:
eventBus.addHandler(NewPrescriptionEvent.TYPE, new OnNewPrescription());
olay: Ben TİP her farklı olması gerektiğini düşünüyordum
public class NewPrescriptionEvent extends GwtEvent<NewPrescriptionHandler> {
public static final GwtEvent.Type<NewPrescriptionHandler> TYPE = new GwtEvent.Type<NewPrescriptionHandler>();
private int dataObjectId;
public NewPrescriptionEvent(int dataObjectId) {
this.dataObjectId = dataObjectId;
}
@Override
protected void dispatch(NewPrescriptionHandler handler) {
handler.onNewPrescription(this, dataObjectId);
}
@Override
public GwtEvent.Type<NewPrescriptionHandler> getAssociatedType() {
return TYPE;
}
}
zaman ama yine de aynı olay. Herhangi bir öneri var mı?
Thx.
İstemci tarafı işlemeyi 'zamanlamak' için olay sistemini kullanıyorsunuz? Etkinliği işlemek için sadece _something_ öğesine ihtiyacınız varsa, yalnızca işlemi tetikleyen etkinlikleri dinleyen başka bir widget oluşturun. Olayları ele alması beklenmeyen widget'lara etkinlik işleyicileri ekliyorsanız, tuhaf bir şeyler oluyor. Belki daha fazla etkinlik türüne veya başka bir şeye ihtiyacınız vardır. –
Aynı olayı kullanacaksanız ve yalnızca üç işleyiciden birinin bir şey yapmasını istiyorsanız, etkinlikle iletilen bir değişkeni kullanarak çalışacaktır. Örnek kodunuz biraz karışık görünüyor. Bu sorunu çözmek için başka öneriler mi arıyorsunuz yoksa kodunuzu düzeltmek için yardım ister misiniz? – dagge