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 :

debutant struts liste données sql


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut debutant struts liste données sql
    Bonjour!

    Voilà le topo, je developpe depuis quelques années en J2EE mais sans utiliser struts puisque nos IHM étaient en 100% Flash et que cela compliquait plus les choses que de les arranger.

    Nouveau projet, nouvelle donne, plus de Flash donc je me lance sur Struts!
    Jusqu'à maintenant, pas de soucis pour les formulaires de saisie et enregistrement dans la BDD, tout est ok, c'est plutot simple a force.

    Par contre, je bute completement sur une simple jsp devant m'afficher sous forme de liste les valeurs d'une table sur tout ses enregistrements.

    donc en gros, j'ai créé mon Action qui fait ma requette et me crée un arraylist d'objets (j'ai repris la classe ActionForm de ma table faite pour la creation histoire d'avoir accées a mes valeurs par les getters, peut être est-ce là mon erreur).
    Ensuite toujours dans mon action, je pousse mon arraylist dans la requette :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("listeEquipe",listeEquipe);


    Côté jsp, je nage un peu pour la config du struts-config.xml et la declaration de mon scope...

    donc voila ma jsp de test :
    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
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
    <jsp:useBean id="listeEquipe" scope="request" class="java.util.ArrayList"/>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Liste &eacute;quipe</title>
        </head>
        <body bgcolor="#BAC5F9">
     
        <logic:iterate id="equip" name="listeEquipe">
            <bean:write name= "equip" property="cle"/><br>
            <bean:write name= "equip" property="libelle"/><br>
            <bean:write name= "equip" property="description"/><br><br>
        </logic:iterate>
     
        </body>
    </html>
    quand je teste, aucune erreur, mais rien ne s'affiche, pire apparement le bean action ne se lance même pas (pas de trace d'acces a ma bdd dans les logs)

    voici mon struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        <global-forwards>
            <forward name="ListEquipe" path="/ListEquip.do"/>
            <forward name="welcome"  path="/Welcome.do"/>
        </global-forwards>
     
        <action-mappings>
            <action input="/CreeEquipe.jsp" name="creeEquipeAF" path="/creeEquipe" attribute="equipeValide" scope="request" type="com.myapp.struts.creeEquipeA">
                <forward name="success" path="/CreeEquipeSucces.jsp"/>
            </action>
            <action path="/ListEquip" type="com.myapp.struts.listEquipeA">
                <forward name="ListEquipe" path="/ListEquipe.jsp"/>
            </action>
            <action path="/Welcome" forward="/welcomeStruts.jsp"/>
        </action-mappings>

    quelqu'un aurait-il un bon tuto qui me permettrait de comprendre comment remonter les resultats d'une requette dans ma jsp avec struts?

    une petite aide quelquonque?

    merci je le rappelles, je me suis mis a struts seulement depuis qques jours

  2. #2
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Vraiment à tout hasard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <logic:iterate id="equip" name="listeEquipe" scope="request">
    A+

    Et puis peut-être cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action name="creeEquipeAF" path="/creeEquipe" validate="false" scope="request" type="com.myapp.struts.creeEquipeA">
        <forward name="success" path="/CreeEquipeSucces.jsp"/>
    </action>
    
    Retirer le input s'il n'y a pas de ActionForm et mettre validate à false
    A+

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Petites remarques :

    - tout d'abord, je trouve surprenant que tu balances ta liste via request alors que tu utilises un ActionForm... Autant mettre la liste dedant...

    - pour le tag <logic:iterate> à priori il est correctement positionné (si tu ne positionne pas l'attribut scope, ça veut dire any-scope, donc c'est ok)

    - le problème vient plutôt de l'appel. Peux-tu dire comment tu arrives à la page au juste (un appel de la page ou un appel de l'Action) ?

    - tant qu'à débuter, je te conseil d'utiliser une bibliothèque d'IHM un peu plus "consistante" que <html> (même si dans ton exemple tu ne l'utilises pas... c'est pour plus tard), comme struts-layout par exemple.
    Elle te permettra (entre autre) de mettre en forme tes listes avec de beau "pager" style google, d'utiliser les expressions paramétrées dans les attributs des tags, de définir l'apparence en fonction du mode d'affichage (création, modification, affichage) etc...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Une autre remarque : à partir du moment où tu utilises un tag Struts, notamment ici le logic:iterate, le code suivant est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jsp:useBean id="listeEquipe" scope="request" class="java.util.ArrayList"/>

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    salut!

    desolé pour la reponse tardive, plus de pc a la maison (et pieces qui tardent a arriver et hier j'etait pas vraiment au bureau...)

    donc, mister nono j'ai essayé , ca change rien...

    OButterlin: et bien en fait comme je disais jdebute vraiment sur struts, et il me semblait qu'utiliser l'action form me permettait d'acceder plus facilement aux differents setters et getters, mais peut être me trompe-je

    pour l'appel, en fait ce n'est pas encore bien defini, comme je ne connais pas les perfs de struts, je ne sais pas trop s'il vaut mieux apperler la jsp ou directement l'action (ce qui me semble le plus simple).

    c-nvy, ok, merci

    donc bref, OButterlin pourrais-tu me detailler un peu plus les 2 methodes d'acces (via jsp ou via action directement) stp?

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    bon voilj'ai réussi, donc pour l'exemple si d'autres se posent la question, je met ma solution de base :

    struts-config
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <?xml version="1.0" encoding="UTF-8" ?>
     
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
     
     
    <struts-config>
        <form-beans>
            <form-bean name="listEquipeAF" type="com.myapp.struts.listEquipeAF"/>
            <form-bean name="creeEquipeAF" type="com.myapp.struts.creeEquipeAF"/>
            <form-bean name="creeEmployeAF" type="com.myapp.struts.creeEmployeAF"/>
     
        </form-beans>
     
        <global-exceptions>
     
        </global-exceptions>
     
        <global-forwards>
            <forward name="CreeEmploye" path="/CreerEmploye.do"/>
            <forward name="ListEquipe" path="/ListEquipe.do"/>
            <forward name="welcome"  path="/Welcome.do"/>
        </global-forwards>
     
        <action-mappings>
            <action input="/CreeEmploye.jsp" name="creeEmployeAF" path="/CreeEmploye" scope="request" type="com.myapp.struts.creeEmployeA">
                <forward name="success" path="/CreeEmployeSucces.jsp"/>
            </action>
            <action input="/CreeEquipe.jsp" name="creeEquipeAF" path="/creeEquipe" attribute="equipeValide" scope="request" type="com.myapp.struts.creeEquipeA">
                <forward name="success" path="/CreeEquipeSucces.jsp"/>
            </action>
            <action path="/ListEquipe" type="com.myapp.struts.listEquipeA">
                <forward name="success" path="/ListEquipe.jsp"/>
                <forward name="error" path="/ListEquipeError.jsp"/>
            </action>
            <action forward="CreerEmploye.jsp" path="/CreerEmploye.do"/>
            <action path="/Welcome" forward="/welcomeStruts.jsp"/>
        </action-mappings>
     
        <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
     
        <message-resources parameter="com/myapp/struts/ApplicationResource"/>    
     
        <!-- ========================= Tiles plugin ===============================-->
        <!--
        This plugin initialize Tiles definition factory. This later can takes some
        parameters explained here after. The plugin first read parameters from
        web.xml, thenoverload them with parameters defined here. All parameters
        are optional.
        The plugin should be declared in each struts-config file.
        - definitions-config: (optional)
        Specify configuration file names. There can be several comma
        separated file names (default: ?? )
        - moduleAware: (optional - struts1.1)
        Specify if the Tiles definition factory is module aware. If true
        (default), there will be one factory for each Struts module.
        If false, there will be one common factory for all module. In this
        later case, it is still needed to declare one plugin per module.
        The factory will be initialized with parameters found in the first
        initialized plugin (generally the one associated with the default
        module).
        true : One factory per module. (default)
        false : one single shared factory for all modules
        - definitions-parser-validate: (optional)
        Specify if xml parser should validate the Tiles configuration file.
        true : validate. DTD should be specified in file header (default)
        false : no validation
     
        Paths found in Tiles definitions are relative to the main context.
        -->
        <plug-in className="org.apache.struts.tiles.TilesPlugin" >
            <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />      
            <set-property property="moduleAware" value="true" />
        </plug-in>
     
        <!-- ========================= Validator plugin ================================= -->
        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property
                property="pathnames"
                value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
        </plug-in>
     
    </struts-config>
    mon bean 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    /*
     * listEquipeA.java
     *
     * Created on 9 mars 2007, 16:32
     */
     
    package com.myapp.struts;
     
    /* classes struts */
    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.ActionMapping;
    import org.apache.struts.action.ActionForward;
     
    /* classes applicatives access oracle */
    import java.sql.*; 
    import java.io.*;
    import java.util.*;
    import java.text.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import composant.pool.*;
    import composant.syslog.*;
    import com.myapp.struts.creeEquipeAF;
     
    /**
     *
     * @author gregory
     * @version
     */
     
    public class listEquipeA extends Action {
     
        /* forward name="success" path="" */
        private final static String SUCCESS = "success";
        private final static String ERROR = "error";
        ConnectionPoolMgr poolManager = ConnectionPoolMgr.getInstance();
        private SysLog syslog;
     
     
        /**
         * This is the action called from the Struts framework.
         * @param mapping The ActionMapping used to select this instance.
         * @param form The optional ActionForm bean for this request.
         * @param request The HTTP Request we are processing.
         * @param response The HTTP Response we are processing.
         * @throws java.lang.Exception
         * @return
         */
        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
            Statement stmt;
            this.syslog = new SysLog("personnel");
            ResultSet rset;
            ArrayList listeEquipe = new ArrayList();
            creeEquipeAF equip;
     
    //        String user_soc = request.getParameter("user_soc");
            String user_soc = "PERSONNEL";
     
            try{
                Connection conn = poolManager.getConnection("xxxxxxx");
                stmt = conn.createStatement();
                StringBuffer sql = new StringBuffer(1048);
     
                // prepare la requete d'ajout de l'equipe à la base
                sql.delete(0,sql.length());
                sql.append("SELECT * FROM \"" + user_soc + "\".EQUIPE");
     
                this.syslog.logTrace("-->Listing des équipe (Equipe)");
                rset = stmt.executeQuery (sql.toString());
                while(rset.next()){
                    equip = new creeEquipeAF();
                    equip.setCle(rset.getString(1));
                    equip.setLibelle(rset.getString(2));
                    equip.setDescription(rset.getString(3));
                    listeEquipe.add(equip);
                }
                rset.close();
                poolManager.freeConnection("xxxxx", conn);
            }
            catch (Exception e) {
                this.syslog.logError("Impossible d'executer la requete de creation (Equipement)");
                this.syslog.logError("Motif : "+e);
                this.syslog.logError("");
                return mapping.findForward(ERROR);
            }
            request.setAttribute("listeEquipe",listeEquipe);
            return mapping.findForward(SUCCESS);
     
        }
    }
    ma jsp de resultat
    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
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
    <%--
    The taglib directive below imports the JSTL library. If you uncomment it,
    you must also add the JSTL library to the project. The Add Library... action
    on Libraries node in Projects view can be used to add the JSTL 1.1 library.
    --%>
    <%--
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
    --%>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Liste &eacute;quipe</title>
        </head>
        <body bgcolor="#BAC5F9">
     
            <html:form action="CreeEmploye">
                <html:select property="equipe">
                    <html:options collection="listeEquipe" property="libelle" labelProperty="libelle"/>
                </html:select>
            </html:form>
        </body>
    </html>
    bon bien sûr ya quelques beans autour (employe etc) mais ce que je cherchait a faire, a savoir en attaquant le serveur sur http://xxxxxx/Personnel/ListEquipe acceder a ma base de donnée oracle, lister les resultats dans des objets ActionForm et afficher la page JSP qui les utilisent sour forme de liste de choix!

    je marque comme résolu

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/06/2015, 17h07
  2. Réponses: 2
    Dernier message: 10/05/2014, 16h37
  3. Réponses: 3
    Dernier message: 16/07/2009, 18h00
  4. Réponses: 2
    Dernier message: 17/02/2009, 20h26
  5. [debutant]envoie de données
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 14/08/2003, 10h24

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