Bonjour.
Je débute en Struts et rame dès qu'il s'agit de faire des choses un peut spécifiques.
Avec Struts, est-il possible d’alimenter par défaut un ActionForm qui ne possède qu’une seule propriété qui est une Liste d’objets précis (dont la taille peut variée d’un appel à l’autre). Puis d’afficher dans la JSP cette liste en permettant la modification de certaines propriétés des objets de la liste.
Jusque là j’y arrive (au moyen du taglib « <logic:iterate … »), mais mon problème est pour récupérer le liste avec les valeurs modifiées.
Faut-il utiliser les taglig « nested » ?
Avez-vous un exemple ?
Si je ne suis pas assez clair voici une description plus poussée :
Mon application Web (J2EE, Struts) doit permettre la saisie de dossiers pour insertion dans une BDD.
Un dossier est constitué d'une entête (infos générales) et éventuellement de 0 à n lignes de détails (Bref il s'agit d'une relation Maitre-détail sans forcément de détail).
J'ai donc fait une première JSP pour la saisie des informations générales, mais où on précise aussi le nombre de lignes détail "N" qu'on veut associer à ce dossier (valeur pré-renseignée à 0 par défaut).
Si le nombre "N" saisie est resté à 0 alors l'action insère le dossier (sans ligne détail) dans la base et chaine sur une JSP indiquant que le dossier a bien été créé.
Si le nombre "N" saisi est > 0 alors l'action renvoie vers une autre JSP pour saisir ces N lignes de détail.
Comment implémenter ça techniquement sous Struts ? Est-ce possible ?
Voici comment j'essaie de procéder:
JSP1 : Saisie des infos générales du dossier : nom, type dossier, …, nombre de lignes détail (entre 0 et N)
Action1 : récupère les informations saisies et connait alors le nombre de ligne détail à faire saisir sur la prochaine JSP
ActionForm1 : Structure d’une entête de dossier
JSP2 : Saisie des N lignes détails
Action2 : Récupère ces N lignes détail saisies
ActionForm2 : Sa structure est une liste d’objet « ligne détail »
La première Classe d'Action (« Action1 » qui réceptionne le Bean de Formulaire « ActionForm1 » permettant de saisir les infos générales du dossier) permet de connaitre le nombre de lignes détails à créer.
Le Bean de Formulaire (ActionForm2) qui correspond à la seconde JSP (saisie des lignes détails) ne contient qu'une seule propriété, à savoir un tableau de ligne détail: "Private lgnDetail[] listeLgn;" avec ses accesseurs get et set.
Dès la première Classe d'Action (« Action1 » qui réceptionne le Bean de Formulaire permettant de saisir les infos générales du dossier), je comptais donc créer l'ActionForm2 de la JSP2 sur laquelle on doit chainer, puisque je connais le nombre de lignes détails à créer. Je crée donc le second « ActionForm2 » qui n'est rien d'autre qu'une liste de N lignes détails que je veux faire renseigner dans la JSP.
Je peux mettre les codes sources si nécessaire.
Merci
Partager