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 :

Comment récuperer les champs d'un registre d'une liste dans l'action


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut Comment récuperer les champs d'un registre d'une liste dans l'action
    Bonjour tt le monde,

    Voilà mn problème

    je souhaite récupérer l'id de l'enregistrement (parmis la liste des enregistrements) sur lequel je souhaite faire une Suppression ou un Update voici le code de la 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
    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
     
     
    <%@ page language="java" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ page import="com.kb.beans.Users" %>
    <html>    
     <head>
    	 <script type="text/javascript">
    	<!-- Put the id on the hidden field //-->
    		function setAction(action, id){
    		    alert(action);
    		    alert(id);
    		    document.forms[0].action.value=action;
    		    document.forms[0].id.value=id;
    		    document.forms[0].submit();
    		}
    	</script>        
       <title>Veuillez inserer vos données</title>    
     </head>    
     <body>
     <h1 align="center">Veuillez inserer vos données</H1>        
     <div align="center">  
     <TABLE border="1">
     
    	  <html:form action="/register.do" method="POST" focus="nom">                
    	  <html:hidden property="id" />
    	    <tr> 
    	    	<td align="right"> Nom : </td> 
    	    	<td><html:text property="nom" /> </td>
    	    </tr>
    	    <tr> 
    	    	<td align="right">Prenom : </td> 
    	    	<td> <html:text property="prenom" /> </td>
    	    </tr>
    	    <tr>
    	    	<td align="right"> E-Mail : </td>
    	    	<td><html:text property="email" /> </td>
    	    </tr>
    		<html:hidden property="action"/>
    	    <tr> <td colspan="2"><html:submit property="submit" /> </td></tr>
     
     
     </TABLE>
     <TABLE border="1">
     	<logic:iterate id="utilisateurs" name="UserInputForm" property="utilisateurs" type="Users" >
    	 <tr>
     	  <td><bean:write name="utilisateurs" property="id" /></td>
    	  <td width="150"><bean:write name="utilisateurs" property="nom" /></td>
    	  <td width="150"><bean:write name="utilisateurs" property="prenom" /></td>
    	  <td width="150"><bean:write name="utilisateurs" property="email" /></td>
    	  <td><html:submit property="Modifier" value="Modifier" onclick="setAction('update', '<bean:write name='utilisateurs' property='id' />');" /> </td> 
    	  <td><html:submit property="Supprimer" value="Supprimer" onclick="setAction('delete', '<bean:write name='utilisateurs' property='id' />');" /> </td> 	  
    	 </tr>
    	</logic:iterate>
     </TABLE>
     </html:form>  
     </div>
    </body>
    </html>
    Voici aussi le code de mon action :

    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
     
     
    package com.kb.action;
     
    import java.util.ArrayList;
    import java.util.Vector;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import com.kb.actionform.UserInputForm;
    import com.kb.commun.GestUser;
     
    public class UserInputAction extends Action {
     
    	ArrayList arListe = new ArrayList();
     
    	public ActionForward execute(ActionMapping actMap,
    								ActionForm form,
    								HttpServletRequest request,
    								HttpServletResponse response){
     
    		UserInputForm userInputForm = (UserInputForm)form;
    		String id = userInputForm.getId();
    		Vector vec = userInputForm.getUtilisateurs();
    		String action = userInputForm.getAction();
    		request.setAttribute("nom", userInputForm.getNom());
    		request.setAttribute("prenom", userInputForm.getPrenom());
    		request.setAttribute("email", userInputForm.getEmail());
     
    		GestUser user = new GestUser();
     
    		if(action.equals("add"))
    			user.addUser(userInputForm.getNom(), userInputForm.getPrenom(), userInputForm.getEmail());
     
    		if(action.equals("update"))	
    			user.updateUser(userInputForm.getId(), userInputForm.getNom(), userInputForm.getPrenom(), userInputForm.getEmail());
     
    		if(action.equals("delete"))	
    			user.deleteUser(Integer.parseInt(request.getParameter("id")));
     
    		userInputForm.setUtilisateurs(user.selectAll());
     
    		return actMap.findForward("registedSuccess");
    	}
     
    }
    Merci d'avance de votre aide

  2. #2
    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
    Tu peux t'inspirer de la solution proposée à la fin de cette discussion.
    Tu peux choisir de passer la valeur de l'index comme dans l'exemple donné ou l'id de l'utilisateur.
    A partir de l'un ou l'autre, tu pourras facilement retrouver les autres infos.

  3. #3
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut
    Merci beaucoup pr t as réponse. J'ai suivi la conversation indiquer mais mon index n'est pas interprété.
    j'ai utilisé aussi les solutions proposé dans la conversation http://www.developpez.net/forums/d61...g-html-hidden/
    mais sans résultat.
    Le code de ma fonction java-script invoqué est le siuvant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		function setAction(action, id){
    		    alert(action);
    		    alert(id);
    		    document.forms[0].action.value=action;
    		    document.forms[0].id.value=id;
    		    document.forms[0].submit();
    		}
    Quand j'utilise le code suivant, l'Alert m'affiche intégralement '${id}':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:iterate id="Users" name="UserInputForm" property="utilisateurs" indexId="id">
     <tr>
    ......
     <td><html:submit property="Modifier" value="Modifier" onclick="setAction('update', '${id}');" /> </td> 
     
    .....
    Et sans les guillemets de ${id} la fonction setAction n'affiche aucune alert.
    J'ai aussi essayer de mettre ${Users.id}, <%=id%> et <%=Users.id%> mais sans résultat.
    Merci d'avance pour votre aide.

  4. #4
    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
    Cela ne fonctionne pas avec la tld struts-html-el.tld ? Bizarre !
    Quelle version de Struts utilises-tu ?

    Sinon, avec une scriptlet, cela donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:submit property="Modifier" value="Modifier" onclick='<%="setAction('update','"+id+"');"%>' />

  5. #5
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut
    En fait moi aussi j'ai une ancienne version de Struts c pr cela que j'ai pas pu utilisé la tld struts-html-el.tld .
    l'utilisation de la scriptlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:submit property="Modifier" value="Modifier" onclick='<%="setAction('update','"+id+"');"%>' />
    ne fais que incrementer à partir de 0, alors que je dois avoir l'id de l'enregistrement.
    Merci encore pour votre temps.

  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
    Oui parce que tu as mis id dans l'attribut indexId ce qui correspond à l'index courant de la collection.

    Si tu veux l'id de l'objet, il va falloir faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:submit property="Modifier" value="Modifier" onclick='<%="setAction('update','"+((User)Users).getId()+"');"%>' />
    J'ai supposé que ton objet s'appelait User.
    A toi de remplacer par le bon nom d'objet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/03/2011, 21h32
  2. Réponses: 4
    Dernier message: 26/09/2010, 18h32
  3. Récuperer les n valeurs plus grandes d'une liste non triée
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 17
    Dernier message: 26/07/2007, 12h34
  4. FAQ : Comment alterner les couleurs de chaque élément d'une liste déroulante ?
    Par yoghisan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/06/2007, 14h15
  5. Comment récuperer les champs d'un formulaire?
    Par steeves5 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2006, 10h54

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