A New Hope
 
Cela fait un petit moment que je cherchais à faire un framework Ajax pour WebObjects. Et voici donc le fruit d’un long travail et de très grandes réflexions (faut pas exagérer non plus).
 
Alors voilà. Le principe c’est de ne jamais avoir à travailler le XML de retour avec du Javascript (c’est galère et différent selon le navigateur). Pour cela, j’ utilise une DTD XML toujours identique et celle fichiers “plist” d’Apple car elle convient parfaitement.
 
Afin de rendre les choses plus simple et plus WO, j’ai créé une API Javascript (“Fundation”) pour manipuler les données coté client avec la même logique que coté serveur. Ainsi, lorsque le serveur envoie au client un NSArray, celui-ci est transformé en XML, le XML est parsé et transformé en une instance de JSArray coté client (même API que NSArray). Idem pour un NSDictionary ...
 
La correspondance est la suivante :
            Serveur                                                Client
        NSArray                                               JSArray
        NSDictionary                                       JSDictionary
        EOEntrepriseObject                            JSDictionary
        NSArray< EOEntrepriseObject>         NSArray<JSDictionary>
 
L’instruction magique pour transformer un objet en PList est :
        public WOResponse responseWithObject (Object o);
 
Les appels Ajax sont effectués via une instance javascript d’un objet nommé “Invoker” (composant WO AjaxInvoker). Celui-ci prend en paramètre une “DirectAction” WebObjects ainsi que le nom de la fonction Javascript à exécute une fois l’appel terminé.
 
Remarque :
Il y a tout de même un truc que je ne comprends pas avec Ajax. Pourquoi envoyer un XML ou un JSon (comme le font certains) alors qu’il est si simple d’envoyer un composant WO.
 
Bug non résolue :
C’est con mais il y en a un gros. Et jusqu’à présent je n’ai pas trouvé la solution. C’est lié à l’EditingContext, de temps en temps, il y a un blocage complet du serveur avec un magnifique “server internal error”.
J’espère trouvé la solution bientôt.
 
 
A New Hope
mercredi 7 juin 2006
Download