여러 발표자가 동일한 이벤트를 "수신 대기"하지만 각 이벤트를 발표자에게 고유하게 만들려고했습니다.연결된 여러 gwt 위젯에 대한 이벤트 차별화
Ex. 하나의 다른 탭에 각각 3 개의 Composite 위젯을 만듭니다. 그들은 모두 바인딩에서 동일한 이벤트에 첨부됩니다. "NewPrescriptionEvent"라고 부르 자. 이 이벤트가 발생하면 내 3 개의 모든 합성물이 DO으로 시도됩니다. 나는 그들 중 한 명이 그것을하기를 원한다.
이 작업을 수행하는 유일한 방법은 임시 이벤트 ID (이벤트 내부의 정수)를 작성하여 이벤트에 응답하려는 각 위젯을 확인하는 것입니다.
코드는 내가 평소을 결합 동안
private class OnNewPrescription implements NewPrescriptionHandler {
@Override
public void onNewPrescription(NewPrescriptionEvent event, int dataObjectId) {
if (getDataObject().getPatientId() == dataObjectId) {
...
}
}
}
스 니펫 :
eventBus.addHandler(NewPrescriptionEvent.TYPE, new OnNewPrescription());
이벤트 : 나는 TYPE은 각각 다를 필요가 있다고 생각했다
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;
}
}
시간은 같지만 여전히 같은 이벤트가됩니다. 누구 제안이 있습니까?
Thx.
이벤트 시스템을 사용하여 클라이언트 측 처리를 '예약'하고 있습니까? 이벤트를 처리하기 위해 _something_이 필요하면 처리를 트리거하는 이벤트 만 수신하는 다른 위젯을 작성하십시오. 이벤트 핸들러를 이벤트를 처리하지 않을 위젯에 추가하는 경우 이상한 점이 있습니다. 어쩌면 더 많은 이벤트 유형이 필요할 수도 있습니다. –
동일한 이벤트를 사용하고 세 핸들러 중 하나가 실제로 어떤 작업을 수행하기를 원하는 경우 이벤트와 함께 전달 된 변수를 사용하면됩니다. 귀하의 예제 코드는 다소 엉망이 보인다. 이 문제를 해결하기위한 다른 제안을 원하십니까? 아니면 코드를 수정하는 데 도움이 필요하십니까? – dagge