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 :

[Supprimer ligne de table] Probleme pour recuperer l'id de ma table


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut [Supprimer ligne de table] Probleme pour recuperer l'id de ma table
    Bonjour,

    Je manipule en ce moment une base de donnees a l'aide de struts sous NetBeans.

    J'arrive a ajouter une table mais pour ce qui est de supprimer je n'y arrive pas car il faut pour cette requete que je recupere mon id de la table pour ensuite supprimer la bonne ligne du tableau de resultat.

    J'ai un fichier datasourceArticle.jsp qui a l'aide d'un logic:iterate affiche le contenu de ma table article. Pour chaque ligne du tableau je propose a l'utilisateur de supprimer (et modifier mais c'est le meme probleme) la ligne.

    Je dispose egalement d'un classe java ActionFormArticle aui contient les getter et setter et puis finalement d'une classe DatasourceArticle.java pour chaque operation qui va executer la requete.

    Donc par exemple pour l'ajout, j'ai une classe DatasourceAjoutArticle.java.

    Avant de vous illustrer mon probleme avec mon code, je precise que mon probleme est que je n'arrive pas a supprimer ma ligne du tableau vu que je suis cense recuperer mon idArticle du logic:iterate pour l'implementer dans ma requete : DELETE FROM article WHERE idArticle = '"+monIdRecupere+"' quelque chose comme ca.

    Voila, voici le code associe (mon action supprimer a pour path /del) :
    Je ne vous fait part que de code interessant.


    datasourceArticle.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
     
    <logic:present name = "ArticleCustomers">
            <div id = "titre">Nos articles :</div>
            <br><br>
     
            <div id="texte">
            <a href="./ajouterArticle.jsp">Add a Article</a>
            </div>
     
            <table border="1" class="tableau" align="center">
                <thead>
                    <tr class="headTableau">
                        <th><bean:message key="customer.designation" /></th>
                        <th><bean:message key="customer.prix" /></th>
                        <th>Modify</th>
                        <th>Delete</th>
                    </tr>
                </thead>
                <tbody>
                    <logic:iterate id="customer" name="ArticleCustomers">
                        <tr class="ligneTableau">
                            <td><bean:write name="customer" property="designation" /></td>
                            <td><bean:write name="customer" property="prix" /></td>
                            <td><html:link action="/modif" linkName="Modify">Modify</html:link></td>
                            <td><html:link action="/del" linkName="Delete">Delete</html:link></td>
                        </tr>
                    </logic:iterate>
                </tbody>
            </table>
        </logic:present>
    NewStrutsActionFormArticle.java :

    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
     
    public class NewStrutsActionFormArticle extends org.apache.struts.action.ActionForm {
     
        private String designation;
        private int prix;
        private int idArticle;
     
     
        /**
         * @return
         */
        public String getDesignation() {
            return designation;
        }
     
        /**
         * @param string
         */
        public void setDesignation(String string) {
            designation = string;
        }
     
        /**
         * @return
         */
        public int getPrix() {
            return prix;
        }
     
        /**
         * @param i
         */
        public void setPrix(int i) {
            prix = i;
        }
     
        public int getIdArticle() {
            return idArticle;
        }
     
        /**
         * @param i
         */
        public void setIdArticle(int i) {
            idArticle = i;
        }
     
        /**
         *
         */
        public NewStrutsActionFormArticle() {
            super();
            // TODO Auto-generated constructor stub
        }
     
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
            ActionErrors errors = new ActionErrors();
            if (getDesignation() == null || getDesignation().length() < 1) {
                errors.add("designation", new ActionMessage("error.designation.required"));
                // TODO: add 'error.name.required' key to your resources
            }
            return errors;
        }
    }
    DatasourceDelArticle.java :

    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
     
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
     
     
     
                String designation = null;
                int prix = 0;
                int idArticle = 0;
     
        // Cible par defau
          // Utilisation de LookupForm pour recuperer les parametres de la requete
        if ( form != null ) {
          NewStrutsActionFormArticle lookupForm = (NewStrutsActionFormArticle)form;
          designation = lookupForm.getDesignation();
          prix = lookupForm.getPrix();
          idArticle = lookupForm.getIdArticle();
     
          req = "DELETE FROM article WHERE idArticle = '"+idArticle+"' ";
        }
     
     
     
     
     
            HttpSession session = request.getSession();
            /** Ici, la méthode qui fait la connection à la DataSource est appelée: */
            getCustomers() ;
            /** Ici, nous mettons le customerList dans le scope, pour pouvoir l'utiliser dans la page JSP: */
            return (mapping.findForward(SUCCESS));
        }
     
        private void getCustomers(){
            Connection conn = null;
            Statement  stmt = null;
            PreparedStatement prpStmt = null;
            StringBuffer  resultString ;
     
            try{
                /** Ici, 'empTable' est associé à la clef de la DataSource dans struts-config.xml: */
                dataSource = (DataSource)servlet.getServletContext().getAttribute("empTable");
     
                conn = dataSource.getConnection();
     
                prpStmt = conn.prepareStatement(req);
                prpStmt.executeUpdate();
     
                /** Ici, nous avons mis le champs 4 (le nom) et le champs 7 (la ville) dans la customerList: */
     
            } catch ( SQLException e ) {
                System.err.println("SQL Exception occured while accessing the table" );
                e.printStackTrace();
     
     
            } catch ( Exception e ) {
                e.printStackTrace();
     
            }
     
     
        }
    struts-config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action input="/dataSourceArticle.jsp"
                    name="NewStrutsActionFormArticle"
                    path="/del" 
                    scope="session"
                    type="com.myapp.struts.DatasourceDelArticle">
                <forward name="success" path="/deleteArticleSuccess.jsp"/>
            </action>
            <action forward="/loginOut.jsp" path="/logout"/>
    Voila je suis sur que c'est pas dure du tout comme probleme pour les connaisseurs mais vu que je debute...

    Merci de m'aider !

    Andrew

  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
    Dans le lien, il suffit de passer l'idArticle en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:link action="/del" paramName="customer" paramId="idArticle" paramProperty="idArticle">
       Delete
    </html:link>
    et dans l'Action, pour récupérer l'idArticle passé en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String idArticle=request.getParameter("idArticle");

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut
    J'ai effectue ce que vous m'avez dit mais la suppression ne marche toujours pas

    J'ai remarque que lorsque je met le curseur sur le lien "Delete" a chaque fois j'ai une adresse de type :

    http://localhost:8084/MyVideoStoreAp...do?idArticle=0

    avec l'idArticle toujours a 0.

    Voici pour illustrer le code apres modification :

    dataSourceArticle.jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <logic:iterate id="customer" name="ArticleCustomers">
                        <tr class="ligneTableau">
                            <td><bean:write name="customer" property="designation" /></td>
                            <td><bean:write name="customer" property="prix" /></td>
                            <td><html:link action="/modif" linkName="Modify">Modify</html:link></td>
                            <td><html:link action="/del" paramName="customer" paramId="idArticle" paramProperty="idArticle" linkName="Delete">Delete</html:link></td>
                        </tr>
    </logic:iterate>
    DatasourceDelArticle.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ( form != null ) {
          NewStrutsActionFormArticle lookupForm = (NewStrutsActionFormArticle)form;
          designation = lookupForm.getDesignation();
          prix = lookupForm.getPrix();
          idArticle = Integer.parseInt(request.getParameter("idArticle"));
     
          req = "DELETE FROM article WHERE idArticle = '"+idArticle+"' ";
        }
    Voila Y-a-t'il quelque chose que je n'ai pas bien fait ?

  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
    Lors de la constitution de la liste ArticleCustomers, l'idArticle est-il bien renseigné pour chaque objet ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut
    En effet, je ne le recuperais pas, j'ai change ceci et maintenant je recupere bien mon idArticle dans l'adresse.

    Mais, le lien ne marche toujours pas. Normalement je suis cence arrive sur une page de succes et je n'y arrive pas.

    Je dois donc avoir un probleme avec mon etat "success" du struts-config qui n'est jamais atteinds.

    Je ne vois pas pourquoi je ne rentre pas dans cet etat de succes de DatasourceDelArticle.java, peut-etre vous en verrez plus clair avec cette erreur.

    struts-config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <action path="/lst_article" type="com.myapp.struts.DatasourceArticle">
                <forward name="success" path="/dataSourceArticle.jsp"/>
    </action>
    
    <action input="/dataSourceArticle.jsp"
                    name="NewStrutsActionFormArticle"
                    path="/del" 
                    scope="session"
                    type="com.myapp.struts.DatasourceDelArticle">
                <forward name="success" path="/deleteArticleSuccess.jsp"/>
    </action>
    Ci dessous la page loginSuccessful.jsp qui propose un lien pour afficher le contenu de la table article avec ses operations possibles ainsi que sa classe associe DatasourceArticle.java ou je ne recuperais justement pas avant l'idArticle.

    Cette page et sa classe precede celles decrite dans les messages precedents

    Je vous donne leurs code au cas ou le probleme remontrait jusque la.

    loginSuccessful.jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link action="/lst_article" linkName="Afficher la liste des articles">Liste des articles</html:link><br>
    DatasourceArticle.java : (c'est la que je ne recuperais pas l'idArticle)

    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
     
    public class DatasourceArticle extends Action {
        private DataSource dataSource;
        public ArrayList customerList = new ArrayList();
        private final static String SUCCESS = "success";
     
        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            this.customerList.clear();
            HttpSession session = request.getSession();
            /** Ici, la méthode qui fait la connection à la DataSource est appelée: */
            customerList = getCustomers() ;
            /** Ici, nous mettons le customerList dans le scope, pour pouvoir l'utiliser dans la page JSP: */
            if(customerList  != null){
                session.setAttribute("ArticleCustomers" , customerList);
            }
            return (mapping.findForward(SUCCESS));
        }
     
        private ArrayList getCustomers(){
            Connection conn = null;
            Statement  stmt = null;
            PreparedStatement prpStmt = null;
            ResultSet rs = null;
            StringBuffer  resultString ;
     
            try{
                /** Ici, 'empTable' est associé à la clef de la DataSource dans struts-config.xml: */
                dataSource = (DataSource)servlet.getServletContext().getAttribute("empTable");
     
                conn = dataSource.getConnection();
                String sqlQuery = "SELECT * FROM article ORDER BY designation";
                prpStmt = conn.prepareStatement(sqlQuery);
                rs = prpStmt.executeQuery();
     
                /** Ici, nous avons mis le champs 4 (le nom) et le champs 7 (la ville) dans la customerList: */
                while (rs.next()) {
                    customerList.add(new Article(rs.getInt(1), rs.getString(2), rs.getInt(3)));
                }
                rs.close();
     
            } catch ( SQLException e ) {
                System.err.println("SQL Exception occured while accessing the table" );
                e.printStackTrace();
                return null;
     
            } catch ( Exception e ) {
                e.printStackTrace();
                return null;
            }
     
            return customerList;
        }
    }
    Voila, peut-etre savez vous pourquoi je ne rentre pas dans cet etat de succes (dans lequel je rentre pourtant lors de l'operation "ajouter" qui est tres semblabe)

    En tout cqs je suis sure qu'une fois ce petit probleme regle, ca marchera.

  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
    As-tu bien défini la variable static SUCCESS dans l'Action DatasourceDelArticle ?

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

Discussions similaires

  1. probleme pour recuperer le chemin du dossier courant
    Par HoB dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 11/08/2007, 11h22
  2. Réponses: 3
    Dernier message: 28/08/2006, 16h14
  3. Réponses: 1
    Dernier message: 22/05/2006, 14h44
  4. probleme pour recuperer une valeur
    Par kespy13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/04/2006, 10h18
  5. [VB] Probleme pour recuperer pieces jointes d'outlook
    Par eown dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/04/2006, 09h26

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