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 :

formulaire avec champs de texte dans une boucle


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 17
    Points
    17
    Par défaut formulaire avec champs de texte dans une boucle
    Bonjour,je travaille sur mon projet de fin d'année et j'utilise struts mais je suis bloqué là!
    j'ai créé un formulaire qui recupere des donnée saisies par l'utilisateur pour les inserer dans la base :
    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
     
    <%
    String string = "select r.ARTICLE,r.PARAGRAPHE,r.LIGNE,r.INTITULE,d.TYPE from intendensao.rubrique r,intendensao.depenses d,intendensao.budget b where r.ID_RUBRIQUE=d.ID_RUBRIQUE and r.exercice='"+exercice+"'";
    MyConnection connexion = new MyConnection();
    ResultSet result = connexion.getRequest(string);
    while(result.next()){
     
    %>
    <tr>
    <td><%=result.getString("ARTICLE")%></td>
    <td><%=result.getString("LIGNE")%></td>
    <td><%=result.getString("PARAGRAPHE")%></td>
    <td><%=result.getString("INTITULE")%></td>
    <td><%=result.getString("TYPE")%></td>
    <td><html:text property="creditOuvert" value="0" /></td>
    <td><html:text property="disponible" value="0" /></td>
    </tr>
    <%
    }
    %>
    <tr>
    <td colspan="7"><html:submit value="enregistrer" /></td>
    </tr>
    </tbody>
    le probleme ce que les deux champs de texte "creditOuvert et "disponible" sont inclus dans la boucle while et donc créés automatiquement tous sous les mêmes noms, ce qui me cause un probleme dans le bean ActionForm, parce que je ne sais pas comment appeler les attributs du bean qui doivent normalement correspondre aux champs du formulaire!
    quelqu'un a une idée?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 49
    Points : 60
    Points
    60
    Par défaut
    Il faut travailler avec une map au niveau de ton formulaire

    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
    public class xForm extends ValidatorForm {
     
    	private Map creditOuverts;
     
     
    // avec les 2 methodes suivantes pour acceder aux données creditOuverts.
     
    public String getCreditOuvert(String idx) {
    		String ret = null;
    		if (creditOuverts != null) {
    			ret = (String) creditOuverts.get(idx);
    		}
    		return ret;
    	}
     
    	public void setCreditOuvert (String idx, String chaine) {
    		if (creditOuverts == null) {
    			creditOuverts = new HashMap();
    		}
    		creditOuverts.put(idx, chaine);
    	}
    Tu peux ensuite manipuler l’objet creditOuverts au niveau de ton action


    Coté JSP tu codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <% for (int i=0;i<Integer.parseInt(nbreX);i++) {%>
    	<tr>
    <td> <html:text name="xForm" property="<%="creditOuvert("+i+")"%>" /> </td>
    	</tr>
    	<%} %>


    pour avoir le code html suivant au niveau des navigateurs (si tu regardes le source de ta page sur le navigateur)
    <td><input type="text" name="creditOuvert(0)" size="08" value="" class="bodytext"> </td>

  3. #3
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Le plus propre serait de créer une classe avec pour propriétés article, paragraphe, ligne, intitule, type, creditOuvert et disponible et les getters et setters correspondants.
    Ensuite, dans une classe technique d'accès aux données de la table, on crée une méthode qui retourne une liste d'objets à partir du résultat de la requête :

    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
    public class TaClasseTech
    {
       public List getTaListe()
       {
          String string = "select r.ARTICLE,r.PARAGRAPHE,r.LIGNE,r.INTITULE,d.TYPE from intendensao.rubrique r,intendensao.depenses d,intendensao.budget b where r.ID_RUBRIQUE=d.ID_RUBRIQUE and r.exercice='"+exercice+"'";
          MyConnection connexion = new MyConnection();
          ResultSet result = connexion.getRequest(string);
          List taListe = new ArrayList() ;
          while(result.next())
          {
            TaClasse taClasse = new TaClasse() ;
            taClasse.setArticle(result.getString("ARTICLE")) ;
            taClasse.setParagraphe(result.getString("PARAGRAPHE")) ;
            taClasse.setLigne(result.getString("LIGNE")) ;
            taClasse.setIntitule(result.getString("INTITULE")) ;
            taClasse.setType(result.getString("TYPE")) ;
            taClasse.setCreditOuvert(0) ;
            taClasse.setDisponible(0) ;
            taListe.add(taClasse) ;
          }
         return taListe ;
       }
    }
    et dans l'Action qui s'exécute avant l'affichage du formulaire, on fait appel à cette méthode et on initialise une propriété de type List de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TaClasseTech instanceDeTaClasseTech = new TaClasseTech() ;
    List taListe = instanceDeTaClasseTech.getTaListe() ;
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setTaListe(taListe) ;
    Et ensuite, pour l'afficher et pouvoir la modifier, tu peux utiliser les tags nested :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <nested:form action="pathDeTonAction">
       <nested:iterate property="taListe">
          <nested:write property="article"/>
          <nested:write property="paragraphe"/>
          <nested:write property="ligne"/>
          <nested:write property="intitule"/>
          <nested:write property="type"/>
          <nested:text property="creditOuvert"/>
          <nested:text property="disponible"/>
       </nested:iterate>
       <nested:submit value="enregistrer"/>
    </nested:form>
    Et dans l'Action qui s'exécute au submit du formulaire, tu pourras récupérer la liste modifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form ;
    List taListe=tonActionForm.getTaListe(taListe) ;
    Ceci nécessite de référencer le form-bean dans le mapping de l'Action qui s'exécute avant l'affichage du formulaire et également de celle qui s'exécute au submit du formulaire et de déclarer une propriété de type List dans l'ActionForm avec getter et setter.

Discussions similaires

  1. Input type text dans une boucle
    Par philippef dans le forum Langage
    Réponses: 26
    Dernier message: 07/02/2011, 21h35
  2. affichage d'un objet uicontrol texte dans une boucle
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 25/08/2010, 14h35
  3. Ouvrir un champ de texte dans une gtkvbox
    Par maggots dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 11/05/2010, 22h52
  4. Importation fichier texte dans une boucle
    Par asphodele dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2010, 11h41
  5. inserer un champ de text dans une select box
    Par ilyes_dev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 16/11/2009, 10h39

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