Bonjour,
Encore un petit problème ! lol :)
J'aimerai envoyé un evenement à partir d'un composant que j'ai créer, comment cela doit-il être géré?
Merci :)
Version imprimable
Bonjour,
Encore un petit problème ! lol :)
J'aimerai envoyé un evenement à partir d'un composant que j'ai créer, comment cela doit-il être géré?
Merci :)
Tu crée un FacesEvent, et ensuite tu appelle component.broadCast(event). JSF s'occupe du reste. Typiquement on utilise ça pour des evenement de type "content changed"
Il me semble que le broadcast est immédiat, donc à faire au moment opportun. (Exemple, eviter d'appeler des évènement "changed" pendant lde decode, le faire plutot lors de la conversion ^^)
OKay merci beaucoup ! :)
J'ai créer mon FacesEvent (ActionEvent), mais comment le lier à une méthode passée en paramètre dans mon composant?
Merci
pour ajouter un listener a ton composant, il faut utiliser component.addFacesListener
Ok, mais comment transformer un paramètre style #{monBean.actionListen} en type FacesListener? car j'aimerai ne devoir implémentier une classe pour mon event mais juste utiliser une fonction dans mon bean !
Désolé pour le nombre de question, mais je découvre un peu tout ca!
Merci
crée simplement, lors de la création de ton composant, une classe implémentant ActionListener, et utilisant le binding fourni en paramètre. Basiquement:
L'exemple est mis avec un actionevent de base, tu peux créer tes propres event avec leur propre logique. Evidement, ce n'est pas aux bean de l'interface à implémenter ces interfaces, tu les utilise en interne ettu fini, au final, par les rediriger vers des method binding que tu stocke dans ton composant.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public classe MyComponent extends SomeComponent{ ... String actionListener; ... private static class MyListener extends ActionListener { ..... public processAction(javax.faces.event.ActionEvent event) { MyComponent mycomponent = (MyComponent)event.getComponent(); application.createMethodBinding(myComponent.getActionListener(),...).invoke(....); } } .... addFacesListener(new MyListener()); ... broadcast(new ActionEvent(....));
Merci bien :) ca fonctionne !