IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Coincé struts tableau dynamique


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut Coincé struts tableau dynamique
    Salut les gas, je suis engagé sur le developement web en struts +Hibernate jusqu'a la tout vas bien

    mon probléme est que j'ai une page jsp qui va contenir un tableau d'enregistrement et je voudrer ajouter devant chaque enregistrement un bouton supprimer et je veus que si j'appius sur ce bouton l'enregistrement soit supprimer de ma base.et je n'arrive pas a savoire comment faire :

    Merci de m'aider!

  2. #2
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Sur ta jsp, tu fais une boucle representant une entrée de ta table et devant tu place un bouton devant chaque entrée. Quand tu click sur le bouton, tu rentre dans une action ou tu passe l'id de ton entrée a supprimer et tu la supprimer. n gros en utilisant la jstl ca donnerait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <table>
    <c:forEach item="${entreeList}" var="entree">
    <tr><td><!--Le bouton>
    <c:url var="removeURL" value="/remove.do">
    <c:param name="id" value="${entree.id}" />
    </c:url>
    <a href="${removeURL"><!--l image du bouton--></a>
    <!-- en,suite les différent champs de ton entrée --></td></tr>
    </c:forEach>
    </table>

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut
    Salut,

    En fait j'ai utilisé un logic iterate pour afficher les différents enregistrementsvoici le code:
    <logic:iterate id="Users" name="list" >
    <tr>
    <td><bean:write name="Users" property="nom" /></td>
    <td><bean:write name="Users" property="password"/></td>
    </tr>
    </logic:iterate>

    est ce que je doit crée un nouvelle action pour effectuer l'opération de suppression ? si oui comment je peu recupérer l'id de l'enregistrement?

    Merci pour votre attention!

  4. #4
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Oui tu doit avoir une action pour la suppression. En fait tu dois créer une classe qui etend ActionForm correspondant a tes champs de ton form. Ton form ressemblerai a ca. Tu récupera l'id dans ton action et tu supprimera l"'entrée correspondante. En revanche, je suppose que tu veux aussi un bouton editer pour modifier une entrée. Pour ce faire tu pourra utiliser le meme form et regarde du coté de LookupDispatchAction.

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    Bonjour,

    je suis débutante en struts, et je suis coincé avec le même problème (je travaille avec Hibernate), en fait ce que je veux avoir exactement est ça:

    1.insérer les donnée de la BDD dans un tableau dynamique.
    2.chaque champs comporte deux liens "supprimer" et"modifier".

    donc je veux d'abord connaitre le code à mettre dans la page jsp pour afficher ce tableau (exemple de deux chaps Nom, Login).

    en deuxième lieu, quelle est la logique à utiliser pour les lien(Modifier et Supprimer)

    Merci

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Dans chaque lien, il faut passer en paramètre la valeur d'un des champs.

    Donc, par exemple, si tu veux passer le login en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <logic:iterate id="user" name="listUsers">
    <tr>
       <td><bean:write name="user" property="nom"/></td>
       <td><bean:write name="user" property="login"/></td>
       <td><html:link action="pathActionModifier"  paramName="user" paramId="login" paramProperty="login">Modifier</html:link></td>
       <td><html:link action="pathActionSupprimer" paramName="user" paramId="login" paramProperty="login">Supprimer</html:link></td>
    </tr> 
    </logic:iterate>

  7. #7
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    mais ce code ne permet pas d'avoir ce que j'ai demandé en premier lieu, je veux le code à insérer dans la jsp, pour afficher le tableau (avec les deux liens modifier et supprimer devant chaque champ)

  8. #8
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Avec des "je veux", il ne faut pas t'attendre à avoir des réponses.

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    moi aussi je suis débutons en struts, et voila comment je procède pour ton probleme
    je mais dan le form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class UserListForm extends ActionForm {
     
    	private User[] users = new User[0];
    	/**
            * @return Returns the user.
            */
    	public User[] getUsers() {
    		return users;
    	}
    	/**
            * @param book The user to set.
            */
    	public void setUsers(User[] usersValues) {
    		this.users = usersValues;
    	}
    }
    la page jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <logic:iterate name="userListForm" property="users" id="user">
    <tr>
       <td><bean:write name="user" property="nom"/></td>
       <td><bean:write name="user" property="login"/></td>
       <td>
    <bean:define id="idUser" name="user" property="idUser" />
    <html:link href="${ContextPath}userEdit.do?do=editUser&idUser=${idUser}">
    modifier
    </html:link>
    <td>
    <bean:define id="idUser" name="user" property="idUser" />
    <html:link href="${ContextPath}userEdit.do?do=delUser&idUser=${idUser}">
    supprimer
    </html:link>
    </td>
    </tr>
    </logic:iterate>
    attention pour ${ContextPath} je le define en haut de la page comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%
    String ContextPath =request.getContextPath();
    %>

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    pour l'action de modification et suppression et meme l'ajout j'utilise une seule action comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    public class UserEditAction extends DispatchAction {
     
    	/**
            * loads the book specified by the id from the database and forwards to the
            edit form
            * @param mapping
            * @param form
            * @param request
            * @param response
            * @return ActionForward
            */
    	public ActionForward editUser(
    	ActionMapping mapping,
    	ActionForm form,
    	HttpServletRequest request,
    	HttpServletResponse response) {
     
    		//Modifier utilisateur form
    		UserEditForm userEditForm = (UserEditForm) form;	
    		String id = request.getParameter("idUser");
     
    		...
     
    		return mapping.findForward("showYEdit");
    	}
     
    	/**
            * forwards to the add book form
            * @param mapping
            * @param form
            * @param request
            * @param response
            * @return ActionForward
            */
    	public ActionForward addUser(
    	ActionMapping mapping,
    	ActionForm form,
    	HttpServletRequest request,
    	HttpServletResponse response) {
    		//System.out.println("add user");
    		UserEditForm userEditForm = (UserEditForm) form;
    	.....	
     
    		return mapping.findForward("showYAdd");
    	}
    	/**
            * updates or creates the book in the database
            * @param mapping
            * @param form
            * @param request
            * @param response
            * @return ActionForward
            */
    	public ActionForward saveUser(
    	ActionMapping mapping,
    	ActionForm form,
    	HttpServletRequest request,
    	HttpServletResponse response) {
    		UserEditForm userEditForm = (UserEditForm) form;
     
    ....
    		return mapping.findForward("showYList");
    	}
    public ActionForward delUser(
    	ActionMapping mapping,
    	ActionForm form,
    	HttpServletRequest request,
    	HttpServletResponse response) {
    		UserEditForm userEditForm = (UserEditForm) form;
                    String id = request.getParameter("idUser");
    ....
    		return mapping.findForward("showYList");
    	}
    }

  11. #11
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Pour info, si dans le tag html:link, tu utilises l'attribut action à la place de l'attribut href, tu n'as pas besoin d'ajouter le ${ContextPath}.

    Et pour éviter d'ajouter un bean:define, tu peux utiliser les attributs paramName, paramId et paramProperty comme je l'ai déjà indiqué précédemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <logic:iterate name="userListForm" property="users" id="user">
    <tr>
       <td><bean:write name="user" property="nom"/></td>
       <td><bean:write name="user" property="login"/></td>
       <td>
          <html:link action="userEdit.do?do=editUser" paramName="user" paramId="idUser" paramProperty="idUser">
          modifier
          </html:link>
       <td>
          <html:link action="userEdit.do?do=delUser" paramName="user" paramId="idUser" paramProperty="idUser">
          supprimer
          </html:link>
       </td>
    </tr>
    </logic:iterate>

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    le problem de html:link evec action paramName, paramId est qu'on peut pas utiliser plusieurs variable dynamiques

  13. #13
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Dans le cas où tu veux en passer deux, comme dans ton exemple, le code que j'ai donné devrait fonctionner.
    Sinon, on peut passer plusieurs paramètres dans le html:link via une Map mais c'est un peu plus compliqué à mettre en oeuvre.

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    Map
    merci c_nvy

  15. #15
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    En fait, j'avais donné un exemple dans cette discussion.

  16. #16
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    merci à vous tous, j'ai pas encore essayé le code, mais en gros c'est ce que je voulais.

  17. #17
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    Merci à vous tous

  18. #18
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Pour info, pour éviter le bean:define tout en conservant le passage des paramètres avec utilisation des EL, tu peux tout simplement faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <logic:iterate name="userListForm" property="users" id="user">
    <tr>
       <td><bean:write name="user" property="nom"/></td>
       <td><bean:write name="user" property="login"/></td>
       <td>
          <html:link action="userEdit.do?do=editUser&idUser=${user.idUser}">
          modifier
          </html:link>
       <td>
          <html:link action="userEdit.do?do=delUser&idUser=${user.idUser}">
          supprimer
          </html:link>
       </td>
    </tr>
    </logic:iterate>

  19. #19
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    ca marche très bien merci c_nvy

  20. #20
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    tout a bien marché pour afficher le tableau, et pour la suppression.
    et pour la modification j'affiche le champ à modifier dans une page modifier.jsp avec un boutton submit pour envoyer les nouvelles valeurs.
    le problème c'est que la page sont la balise form marche bien , c'est à dire affiche le champ à modifier, mais une fois j'ajoute la forme une erreur survient lors de l'execution, le code de la page modifier.jsp est le suivant:

    <html:html locale="true">
    <% Utilisateur use = (Utilisateur)request.getSession().getAttribute("champ");%>
    <head>
    <html:base />
    </head>
    <body>
    <table ><tr>
    <td >Login:</td>
    <td ><input type="text" name="login" value="<%=use.getLogin()%>"></td>
    </tr>
    <tr >
    <td >Password:</td>
    <td><input type="text" name="password" value="<%=use.getPassword()%>"></td>
    </tr>
    <tr >
    <td >Profil:</td>
    <td><input type="text" name="profil" value="<%=use.getProfil()%>"></td>
    </tr>
    </table>
    </body>
    </html:html>


    que dois-je faire donc pour passer les paramètres de la JSP à l'action?

Discussions similaires

  1. tableau dynamique avec struts
    Par john_wili dans le forum Struts 1
    Réponses: 1
    Dernier message: 09/03/2010, 18h44
  2. Tableau dynamique sans passer par Struts
    Par habasque dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/06/2008, 22h47
  3. Tableau dynamique de saisie avec Struts
    Par WC2007 dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/05/2007, 16h29
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 09h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo