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:
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:
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:
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:
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:
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 ?