Bjr,
je suis en train d'utiliser et de tester le bus event fourni par GWT (classe HandlerManager). Cela marche bien mais j'ai un problème :mouarf: avec la source de l'élément qui génére l'event.
J'explique avec le code que j'ai réalisé.
mon interface EventHandler :
ma classe Event :Code:
1
2
3
4
5 public interface ITestEventHandler extends EventHandler { void onTestEventHandler(TestEvent event); }
Dans mon code qd l'utilisateur clique sur un bouton :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public class TestEvent extends GwtEvent<ITestEventHandler> { public static Type<ITestEventHandler> TYPE = new Type<ITestEventHandler>(); private Data data; public Data getData() { return data; } public TestEvent (Object source, Data data) { super(); this.data = data; this.setSource(source); } @Override public Type<ITestEventHandler> getAssociatedType() { return TYPE; } @Override protected void dispatch(ITestEventHandler handler) { handler.onTestEventHandler(this); } }
Dans mon code, j'ai une classe qui veut écouter cette event :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 myBt.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { action(); } }); private void action() { eventBus.fireEvent(new TestEvent(this, data)); }
Dans ma console je vois bien le message provenant deCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 this.eventBus.addHandler(TestEvent.TYPE, new ITestEventHandler() { @Override public void onTestEventHandler(TestEvent event) { if(event.getSource()!=null) { System.out.println("Source"); } Data data=event.getData(); if(data!=null) { System.out.println("Data :"+data.toString()); } } });
:ccool: super ! mais par contre je ne vois jamais le message provenant deCode:System.out.println("Data :"+data.toString());
alors qu'au départ l'objet représenté par this(la source de l'event) est bien instancié étant donné que c'est la classe qui contient le bouton qui lance l’événement.Code:System.out.println("Source");
8O je comprends pas pourquoi le event.getSource() me renvoie tjrs null : tester en mode debug.
Si quelqu'un peut me dire ce qui cloche dans mon code, car ayant la tête dans le guidon, :calim2:je ne vois pas le soucis... je renseigne bien la source avec
;)merci d'avance...Code:
1
2
3
4
5
6
7
8 public TestEvent (Object source, Data data) { super(); this.data = data; this.setSource(source);//Set the source. }