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
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 :
1 2 3 4 5
|
public interface ITestEventHandler extends EventHandler
{
void onTestEventHandler(TestEvent event);
} |
ma classe Event :
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 qd l'utilisateur clique sur un bouton :
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 mon code, j'ai une classe qui veut écouter cette event :
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());
}
}
}); |
Dans ma console je vois bien le message provenant de
System.out.println("Data :"+data.toString());
super ! mais par contre je ne vois jamais le message provenant de
System.out.println("Source");
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.
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,
je ne vois pas le soucis... je renseigne bien la source avec
1 2 3 4 5 6 7 8
|
public TestEvent (Object source, Data data)
{
super();
this.data = data;
this.setSource(source);//Set the source.
} |
merci d'avance...
Partager