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 :
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;
	}
 
}
Mon interface Test :

le code xml :
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>
le code java :
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));
	}
 
}
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
 
User user = new User("dupond", "jacques");
Test test = new Test(user);
 
RootPanel.get("widget").add(test);
Si je laisse mon code comme ça tout fonctionne correctement et l'interface m'affiche bien Hello, dupond jacques.

Seulement si je modifie les champs de mon User, ils ne sont pas ré-actualisés sur l'interface.

par exemple si je fais :
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);
la nouvelle valeur du prénom (Bernard) ne sera pas prise en compte.

Y a-t-il un moyen de lier dynamiquement mon User au sein de mon interface graphique ?