Bonjour,
Je voudrais savoir s'il était possible de lier dynamiquement une variable sur un composant graphique créé avec uiBinder.
Pour l'instant j'ai un POJO nommé User, et une interface uiBinder nommée Test.
J'utilise mon objet User dans mon interface Test
Voici mon code qui permettra de mieux saisir le problème :
le POJO User :
Mon interface Test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class User { private String name; private String firstName; public User() {} public User(String name, String firstName) { this.name = name; this.firstName = firstName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } }
le code xml :
le code java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"> <ui:with field="user" type="com.widgets.client.bean.User" /> <g:HTMLPanel> Hello, <g:Label text="{user.getName}"/> <g:Label text="{user.getFirstName}"/> </g:HTMLPanel> </ui:UiBinder>
Dans le point d'entrée de mon application, j'ai écrit le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class Test extends Composite { private static TestUiBinder uiBinder = GWT.create(TestUiBinder.class); interface TestUiBinder extends UiBinder<Widget, Test> {} @UiField(provided = true) User user; public Test(User user) { this.user = user; initWidget(uiBinder.createAndBindUi(this)); } }
Si je laisse mon code comme ça tout fonctionne correctement et l'interface m'affiche bien Hello, dupond jacques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 User user = new User("dupond", "jacques"); Test test = new Test(user); RootPanel.get("widget").add(test);
Seulement si je modifie les champs de mon User, ils ne sont pas ré-actualisés sur l'interface.
par exemple si je fais :
la nouvelle valeur du prénom (Bernard) ne sera pas prise en compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 User user = new User("dupond", "jacques"); Test test = new Test(user); user.setFirstName("Bernard"); RootPanel.get("widget").add(test);
Y a-t-il un moyen de lier dynamiquement mon User au sein de mon interface graphique ?
Partager