Commençons par la définition de la classe Example, point d'entrée de l'application.
public class Example implements EntryPoint {
// la méthode onModuleLoad est appelée au chargement de la page HTML
// Example.html
public void onModuleLoad() {
// On récupère le point d'entrée du DOM à partir duquel on va créer
notre application
RootPanel rootPanel = RootPanel.get();
// Top panel
final VerticalPanel verticalPanel = new VerticalPanel();
rootPanel.add(verticalPanel);
verticalPanel.setSize("100%", "100%");
verticalPanel.setVerticalAlignment
(HasVerticalAlignment.ALIGN_MIDDLE);
verticalPanel.setHorizontalAlignment
(HasHorizontalAlignment.ALIGN_CENTER);
// Table dans laquelle on place les éléments
final FlexTable flexTable = new FlexTable();
verticalPanel.add(flexTable);
flexTable.setStyleName("example-verticalpanel");
// Bouton de validation
final Button validateButton = new Button();
flexTable.setWidget(2, 2, validateButton);
validateButton.setText("Validate");
// Login label + text box
final Label loginLabel = new Label("Login");
flexTable.setWidget(0, 0, loginLabel);
final TextBox login = new TextBox();
flexTable.setWidget(0, 1, login);
login.setWidth("200px");
// Password label + text box
final Label passwordLabel = new Label("Password");
flexTable.setWidget(1, 0, passwordLabel);
final TextBox password = new TextBox();
flexTable.setWidget(1, 1, password);
password.setWidth("200px");
// On intercepte les évènements sur le bouton afin de lancer la
validation
sur le serveur
validateButton.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
// on crée une instance de notre validateur de
// login/password
ValidatorAsync validator =
Validator.Util.getInstance();
// on définit la callback utilisée pour récupérer
de manière
asynchrone
// les infos venant sur serveur
AsyncCallback callback = new AsyncCallback() {
public void onSuccess(Object result) {
// méthode exécutée en cas de succès
String str = (String) (result);
Window.alert(str);
}
public void onFailure(Throwable caught) {
// méthode exécutée en cas d'erreur
Window.alert("erreur de
communication avec le serveur");
}
};
// On execute la commande de validation,
ie on appelle le servlet
// correspondant sur le serveur.
// Ce dernier renvoie le résultat via le
callback ci-dessus
validator.validate(login.getText(),
password.getText(), callback);
}
});
}}
Définition de l'interface Java ValidatorAsync décrivant le service distant à appeler.
public interface ValidatorAsync {
public void validate(String login,String password,AsyncCallback callback);
}