Struts et Flex - Java - Programmation
Marsh Posté le 07-10-2008 à 16:07:49
Gilgamesh d'Uruk a écrit :
|
C'est toujours d'actualité cette question ? J'ai un problème similaire, mais avec un autre Framework. De ce que j'ai compris, il faut se plugger direct sur l'activité Java, et ce sera la partie SWF qui remplacera plus ou moins le controleur.
Marsh Posté le 07-10-2008 à 18:33:25
Hello,
bon déjà ça marche très bien sans jsp
Par contre, je ne parviens pas à garder a session d'une requete à l'autre.
Mais bon, en tout cas
Côté JAVA J2EE : je crée une action struts avec un return null
import org.apache.struts.action.ActionMapping;
protected void doProcess(HttpServletRequest req, HttpServletResponse resp) { (... fait des trucs...) |
Au niveau du struts-config :
|
Au niveau Flex, j'utilise un "squelette" MXML pour créer le HTTPService et je le lance en AS3
Exemple pour le login, avec une méthode POST. Dans ce cas on peut avoir une classe Form côté Struts avec les getter et les setter qui prend la réponse,
Exemple :
public class DocReqForm extends ActionForm { (...getter et setter...) } |
il faut juste que les nom des variables correspondent avec les balises encloses par le <mx:request> ci dessous :
MXML :
|
Actionscript 3
en admettant que mon login est dans le composant canFormLogin, dans ImputText loginTxt (même chose pour le password)
|
Toujours en Actionscript 3 on va traiter la réponse serveur dans un loginHandler. Ici on va imaginer que la class Action qui gère le login au niveau serveur (ici : UserLoginAction) me renvoie qqchose (ici : firstName, lastName, role et ssoKey) empaqueté dans du XML.
Et puis on lance un effet si le login est correct :
//ouverture de l'appli, etat admin ou user } |
Voila, n'hésite pas si tu as d'autre questions.
a+
Marsh Posté le 07-10-2008 à 19:03:27
Marsh Posté le 07-10-2008 à 22:53:10
ReplyMarsh Posté le 07-10-2008 à 22:59:33
Gilgamesh d'Uruk a écrit : |
Struts ça pue
Marsh Posté le 08-10-2008 à 11:29:47
Gilgamesh d'Uruk a écrit : Hello, |
Est ce que tu as déjà essayé le mode RemoteObject plutôt que HttpService ? A priori ça permettrait de mapper directement les classes Java (Action) sur l'ActionScript ?
Marsh Posté le 08-10-2008 à 18:42:41
Nykal a écrit : |
Non, désolé.
Ca m'intéresserais d'ailleurs d'avoir un retour si tu te lances là dedans.
a+
Marsh Posté le 08-10-2008 à 18:44:04
masklinn a écrit : |
j'ai commencé avec ça, donc j'ai pas de point de comparaison.
Tu lui reproche quoi ?
a+
Marsh Posté le 08-10-2008 à 18:57:32
Gilgamesh d'Uruk a écrit : |
A priori je vais essayer ça. Le souci c'est que tu utilises une servlet dédiée à FLEX (BlazeDS par exemple) et du coup tu perds tout ce que peut t'apporter la partie controleur et MVC de FLEX. Par contre tout ce qui est accès au données et à la conf, plutôt Spring du coup, doit marcher assez bien.
Marsh Posté le 08-10-2008 à 18:59:07
Gilgamesh d'Uruk a écrit :
Tu lui reproche quoi ? a+ |
1. Il est extrèmement verbeux
2. Le workflow est rigide et limité
3. La gestion et validation des données est franchement pas terrible, l'idée d'avoir des objets formulaires est très bien, mais l'implémentation et la gestion (binding & validation implicites) de ces formulaires sont horribles
4. Je l'ai déjà cité mais je le répète, les taglibs struts sont ignobles. Je comprend qu'elles sont anciennes, ont été créées à l'époque des JSP 1, avant JSP 2.x, EL ou la JSTL, mais ça reste une horreur, et avec tous les problèmes de devoir faire du copier/coller depuis les fichiers XML sus-cités si on veut pas que tout pête à cause d'une typo difficile à catcher.
On peut je suis sûr en trouver nombre d'autres, je considère tout le framework comme de la boue, mais ça ce sont mes plus gros problèmes avec Struts.
edit: et en alternatives, histoire de proposer quelque chose:
Si il faut rester dans du java, Stripes m'a impressionné, le framework est relativement léger, il est moderne (basé sur les annotations java5, relativement peu de configuration, assez propre), les taglibs ne sont pas plus intéressantes que celles de struts mais il a le bon goût d'en proposer très peu (uniquement pour les formulaires en fait) et il trouve les URLs en se basant sur les noms des classes d'actions, que les IDEs (IntelliJ en tout cas) arrivent à autocompléter sans avoir besoin de support spécifique. Et au moins quand ça pète la chose est claire.
Le binding & validation est presque aussi pourri que struts (implicite avant le déclenchement de l'action) et n'est pas externalisé (les champs font partie des ActionBeans), mais la config de validation est beaucoup plus simple et claire, plus flexible (ou en tout cas plus facile quand on a besoin d'exprimer des choses un peu compliquées) et globalement plus pratique.
Si tu as besoin de voir du côté de PHP, je m'y connais beaucoup moins mais j'ai eu des retours très positifs sur Symfony (voir ratibus si ça t'intéresse, j'ai également un ami à qui j'ai suggéré ça et qui m'a remercié plusieurs fois) dont la dernière release s'est pas mal inspirée de django pour certains trucs (même si ça reste largement en dessous)
Enfin, depuis Stripes 1.5 il est relativement facile de créer des URLs qui ressemblent vraiment à quelque chose, ce qui est très difficile à faire avec struts.
Si on sort de Java, Django. Basé sur Python (ce qui est déjà un avantage), simple, efficace, relativement rapide, peu de configuration, les actions sont de simples fonctions python, la gestion des formulaires est la meilleure que j'ai pu trouver pour le moment depuis newforms (simple, puissante, efficace et flexible), et il est facile de créer des modules réutilisables (apps/applications en lingo django). Après c'est un framework full-stack (on aime ou on aime pas), l'ORM n'est pas idéal quand on a besoin de faire des choses vraiment très compliquées et le langage de templating est discutable aussi bien dans son exécution que dans son implémentation, mais globalement j'ai pas encore vu de framework plus agréable à utiliser.
Marsh Posté le 30-03-2010 à 12:52:03
Gilgamesh d'Uruk a écrit : Toujours en Actionscript 3 on va traiter la réponse serveur dans un loginHandler. Ici on va imaginer que la class Action qui gère le login au niveau serveur (ici : UserLoginAction) me renvoie qqchose (ici : firstName, lastName, role et ssoKey) empaqueté dans du XML. |
Salut,
en fait j'ai suivi votre exemple mais mon problème c'est que je n'arrive pas à cerner comment le Action va renvoyer une réponse.
Si vous pouvez expliquer un peu plus.
Merci
Marsh Posté le 19-05-2008 à 12:37:06
Bonjour,
j'essaye de développer une Rich Internet Application (RIA) avec à la base une partie Struts.
J'ai téléchargé Flex Builder (version d'essai) et je suis le tuto.
Bon pour communiquer avec mon Struts j'ai un truc du genre :
<mx:HTTPService result="handleXML(event);" fault="handleFault(event);" id="xmlRPC" resultFormat="e4x"
url="http://localhost:8080/mpgi/xmlHttpService.jsp" useProxy="false"/>
où xmlHttpService.jsp est une jsp qui "fabrique" du XML.
Le problème c'est qu'au niveau développement, l'intermede jsp me semble inutile (et en plus sous JBuilder il fait rien qu'à me souligner toutes les balises XML parce qu'il ne les reconnait pas et c'est stressant d'avoir des "fausses erreurs" dans son projet)
J'aimerai brancher le tuyau directement sur l'action .do
Quelqu'un a déjà fait ça ?
a+
---------------
Nation spatiale : la chaîne de l'Arche interstellaire.