私は、複数のプレゼンターを同じイベントに「聴く」ことを試みてきましたが、私は各イベントをプレゼンターにとって一意にしました。複数の接続されたgwtウィジェットのイベントを区別する
Ex。 3つのCompositeウィジェットをそれぞれ別のタブに作成します。彼らは拘束時にすべて同じイベントにアタッチされます。それを "NewPrescriptionEvent"としましょう。このイベントが発生すると、すべての3つのコンポジットはDOになります。私は彼らのうちの1人だけがそれをしたい。
これを行うための唯一の方法は、イベントに応答しようとしている各ウィジェットをチェックするtempイベント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_が必要な場合は、処理をトリガーするイベントだけをリッスンする別のウィジェットを作成します。イベントを処理する予定のないウィジェットにイベントハンドラを追加する場合は、何か不思議です。たぶん、もっと多くのイベントタイプが必要かもしれません。 –
同じイベントを使用し、3つのハンドラのうちの1つだけが実際に何かをしたい場合は、イベントで渡された変数を使用します。あなたのサンプルコードはいくらか混乱しているようです。あなたはこの問題を解決するための他の提案を探しているのですか?あるいはあなたのコードを修正する助けが必要ですか? – dagge