jeudi 27 mars 2008

AJAX & JSP

Direct Web Remoting [DWR]

Présenté par son auteur Joe Walker et Geert Bevin (qui intègre DWR dans son framework RIFE).

L'objectif du framework est de permettre un accès facile pour les développeurs Java aux fonctionalités AJAX. Pour arriver à ce but, il effectue une correspondance de certaines classes Java (définies par l'utilisateur) côté serveur vers des équivalents côté client en JavaScript. Bien sûr l'implémentation reste sur le serveur, mais le "squelette" existe en JavaScript côté client et en appelant les fonctions depuis le navigateur, le framework DWR s'occupe d'appeler les méthodes correspondantes sur l'objet correspondant côté serveur. En appelant une méthode on précise le nom de la fonction "callback" JavaScript. C'est la fonction qui sera appelée lorsque l'appel de fonction vers le serveur est terminé (vu que c'est asynchrone, cela est obligatoire).

Classe côté serveur en Java :


public class AjaxService() {
public String[] getOptions() {
return new String[]{"1","2","3"};
}
}

Code JavaScript côté client :


function event() {
AjaxService.getOptions(callback);
}

function callback(data) {
dwr.util.addOptions("listid", data);
}

Dans l'exemple ci-dessus, lorsque la fonction "event()" est lancée côté client, DWR fait un appel au serveur sur un objet AjaxService pour récupérer la liste de valeurs. En passant le paramètre "callback", c'est cette fonction qui sera appelée côté client dès que l'appel au serveur sera terminé. Les données récupérées se retrouvent dans la variable "data". DWR fournit également tout un tas de fonctions très pratiques pour mettre à jour le DOM, ici par exemple on peut remplir facilement les options d'un select avec la méthode dwr.util.addOptions(...). Dans l'exemple c'est le select dont l'id est "listid".

Les présentateurs ont fait quelque chose de vraiment sympa après avoir expliqué le fonctionnement de DWR. Ils ont créé à partir de zéro un jeu de bataille navale entièrement en AJAX. A la fin les personnes dans l'auditoire ont pu, avec leurs portables, se connecter sur le PC (ou le Mac en l'occurence) de Geert et jouer simultanément sur l'application qui venait d'être mise en place. Il y avait en plus un chat intégré qui montrait les possibilités de "push" (reverse-AJAX) que possède DWR dans sa dernière version.


Aucun commentaire: