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