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 :

pb recuperer données base


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut pb recuperer données base
    j'ai un petit pb pour recuperer des données de la base,
    quand je clique sur le lien informatique, je dois chercher dans une base tous les produits informatiques, les recuperer et les afficher dans la page informatique.jsp,
    j'ai ecris l'action : ActionListeInformatique.java
    qui permet d'interroger la base de données mysql, je retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    request.setAttribute("listeInformatique", info); // info : un Arraylist
    return mapping.findForward("AfficherListeInfo");
    mais je sais pas comment l'utiliser pour l'affichage dans la page informatique.jsp

    j'ai egalement fais les configuration necessaires dans le config-struts, on a travaillé en cours siur des formulaires, ici c'est pas le cas...

    merci d'avance !!!

  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 par exemple utiliser le tag logic:iterate.

    Si l'ArrayList listeInformatique est une ArrayList de String :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <logic:iterate name="listeInformatique" id="item">
       <bean:write name="item"/>
    </logic:iterate>
    Si listeInformatique est une ArrayList de beans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <logic:iterate name="listeInformatique" id="item">
       <bean:write name="item" property="propriete1"/>
       <bean:write name="item" property="propriete2"/>
    </logic:iterate>
    sans oublier d'ajouter la directive taglib qui pointe sur la tld struts-logic.tld.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    merci pour ta reponse,
    j'ai essayé avec cette syntaxe, mais j'ai une erreur :

    Cannot find bean: "listeInformatique"


    mon fichier ActionListeInformatique.java se presente 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
    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
    package actions;
     
    import java.sql.ResultSet;
    import java.util.ArrayList;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import bd.AccesBD;
     
     
     
    public class ActionListeInformatique extends Action{
    	private static AccesBD UnAccesBD = null;
    	private static ArrayList<String> info;
    	@SuppressWarnings("deprecation")
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse reponse) throws Exception{
    		try{
    			// Création de l'accés à une base de données...
    			System.out.println("ca marche pas!!!");
    			String NomDeLabase = "site_marchand";
    			UnAccesBD = new AccesBD(NomDeLabase);
    			//  
    			info = new ArrayList<String>();
    			// Préparer la requête...
    			String RequeteMySql = "select nom_produit, description, prix FROM produit where " +
    					"id_categorie = ( select id_categorie FROM categorie where nom_categorie='informatique';";  // Requete MySql
    			ResultSet leResultat;					  
    			// Résultat de la requete...	
    			leResultat=UnAccesBD.executeQuery(RequeteMySql);
    			System.out.println("ca marche pas!!!");				
     
     
    			leResultat.last();
     
    			// On se replace avant la première ligne :
    			leResultat.beforeFirst();
    			// exploiter les résultats..
    			while(leResultat.next()){
    				// Enregistrer la ligne courante...
    				info.add(leResultat.getString("nom_produit"));
    				info.add(leResultat.getString("prix"));
    				info.add(leResultat.getString("description"));
    			}		
    			}//try()
    		catch(Exception e) {
    		// Des erreurs se sont produites...
    			ActionErrors erreurs = new ActionErrors();
    			erreurs.add("pbProduits", new ActionError("erreur.pbProduits"));
    			this.saveErrors(request, erreurs);
    			return mapping.findForward("Echec");
    		}//catch()
    			finally{
    				// Fermeture de la connexion...
    				UnAccesBD.close();
    		}
    		// C'est bon...
    			request.setAttribute("listeInformatique", info);
    			return mapping.findForward("AfficherListeInfo");		
    	}//execute()...
    }

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Par défaut
    pour le fichier struts-config, je le fais comme ceci :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/listeInfo" type="actions.ActionListeInformatique" input="/pages/informatique.jsp">	
        		<forward name="AfficherListeInfo" path="/pages/informatique.jsp" redirect="false"/>
        		<forward name="Echec" path="/pages/erreurs.jsp" redirect="false"/>
    </action>
    merci d'avance

  5. #5
    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
    Il serait mieux de constituer une ArrayList de beans.

    Premièrement, tu crées une classe, soit dans ton cas Produit, avec les getters et les setters sur chacun des attributs de la table dont tu as besoin, soit nom,prix et description.

    Ensuite, pour chaque record de la table en question, tu crées un bean que tu remplis avec les valeurs trouvées dans la table et tu ajoutes chaque bean dans une ArrayList.
    Tu mets cette ArrayList dans le scope et dans ta jsp, tu n'as plus qu'à parcourir cette ArrayList via un logic:iterate.

    Par exemple, 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
    16
    17
    18
    19
    20
     
    String requete = "select nom_produit,prix,description from produit"; 
    ResultSet res = statement.executeQuery(requete); 
    ArrayList info= new ArrayList() ;
    while ( res.next() )
    {
     String nom = res.getString("nom_produit") ;
     String prix= res.getString("prix") ;
     String description= res.getString("description") ;
     // Creation du bean
     Produit produit= new Produit() ;
     // Remplissage du bean
     produit.setNom(nom) ;
     produit.setPrix(prix) ;
     produit.setDescription(description);
      // Ajout du bean dans l'ArrayList
     info.add(produit) ;
    }
    res.close() ;
    request.setAttribute("listeInformatique", info);
    Petite précision sur ton code : il ne faut pas créer de variables d'instance dans une classe Action, sauf dans le cas où ces variables doivent être partagées entre tous les utilisateurs.
    Il faut donc déclarer l'ArrayList info dans la méthode execute et non en dehors.

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

Discussions similaires

  1. comment recupere une base de donnée sybase asa9.0
    Par jassem37 dans le forum SQL Anywhere
    Réponses: 0
    Dernier message: 01/10/2011, 21h43
  2. recuperer une base de données apres execution d'une requette
    Par cyrilherve dans le forum Administration
    Réponses: 4
    Dernier message: 11/12/2009, 12h50
  3. Comment recuperer une base de données effacée
    Par pracede2005 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/03/2008, 09h56
  4. Comment recuperer ma base de Donnée quand Oracle ne lance plus?
    Par Fngonka dans le forum Administration
    Réponses: 7
    Dernier message: 25/05/2007, 13h17
  5. Recuperation de bases de données
    Par modoulaye dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/03/2006, 12h52

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