Bonjour, après de nombreux essais et relectures du livre de J Lafosse je commence à comprendre et à pouvoir mettre en oeuvre le framework struts 2 couplé à Hibernate 3. Malheureusement je trouve les exemples du bouquin incomplets et plutôt obscurs, je ne comprends pas le fonctionnement des classes d'action. Doit on, pour une entité, utiliser un javabean associé à une classe d'action ou peut on définir des méthodes d'action au sein des classes POJO ? J'ai aussi beaucoup de mal à intégrer le principe du passage de paramètres car j'utilisais beaucoup l'objet httprequest avec les servlets, avec struts je ne vois pas du tout comment fonctionnent les paramètres, doit on toujours utiliser request.getParameter() / session.setAttribute() et un requestdispatcher ?
Et enfin est il possible d'utiliser JSP 2.0 avec struts ? Je ne trouve pas comment instancier la taglib en xml.
Pourriez vous m'aider à éclaircir ces points ? Merci.

Pour le moment j'ai les fichiers suivants qui donnent les résultats attendus, est ce qu'il y a quelque chose à améliorer / simplifier ?

Courrier.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
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.menehould.courrier.bean;
 
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
 
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.HibernateException;
import com.menehould.courrier.util.HibernateUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
 
 
@SuppressWarnings("serial")
@Entity
public class Courrier extends ActionSupport
{
    @Id
    @GeneratedValue
    private int id;
    private String datetime;
    private String expediteur;
    private String objet;
    private String destinataire;
    private String transmetteur;
    private int reponse;
 
    public Courrier()
    {
    }
 
    /* à venir
    public String addCourrier() {}
 
    public String editCourrier() {}
 
    public String delCourrier() {}
    */
 
    public String getList()
    {
        HttpServletRequest request = ServletActionContext.getRequest();
        //HttpSession httpSession = request.getSession();
        Transaction tx = null;
        List<Courrier> colist = null;
        Session session = HibernateUtil.getSession();
 
        try 
        {
 
            String hql = "from Courrier";
            if(request.getParameter("order") != null && request.getParameter("type") != null)
            {
                hql += " order by " + request.getParameter("type") + " " + request.getParameter("order");
            }
            colist = session.createQuery(hql).list();
            //httpSession.setAttribute("colist", colist);
            return SUCCESS;
 
        } 
 
        catch(Exception e)
        {
            e.printStackTrace();
            return ERROR;
        }
 
        finally
        {
            session.close();
        }
    }
 
    public int getId()
    {
        return this.id;
    }
 
    public void setId(int id)
    {
        this.id = id;
    }
 
    public String getDatetime()
    {
        return this.datetime;
    }
 
    public void setDatetime(String datetime)
    {
        this.datetime = datetime;
    }
 
    public String getExpediteur()
    {
        return this.expediteur;
    }
 
    public void setExpediteur(String expediteur)
    {
        this.expediteur = expediteur;
    }
 
    public String getObjet()
    {
        return this.objet;
    }
 
    public void setObjet(String objet)
    {
        this.objet = objet;
    }
 
    public String getDestinataire()
    {
        return this.destinataire;
    }
 
    public void setDestinataire(String destinataire)
    {
        this.destinataire = destinataire;
    }
 
    public String getTransmetteur()
    {
        return this.transmetteur;
    }
 
    public void setTransmetteur(String transmetteur)
    {
        this.transmetteur = transmetteur;
    }
 
    public int getReponse()
    {
        return this.reponse;
    }
 
    public void setReponse(int reponse)
    {
        this.reponse = reponse;
    }
 }
}
Struts.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<action name="list" class="com.menehould.courrier.bean.Courrier" method="getList">
            <result>liste_courriers.jsp</result>
            <result name="error">error.jsp</result>
        </action>
liste_courriers.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
<% List<Courrier> colist = (List<Courrier>)session.getAttribute("colist");
            if(colist != null)
            {
                for(Courrier co : colist)
                {
                    %>
                    <form action="edit.action" method="post">
                        <tr>
                            <td class='std'><%=co.getId()%><input type="hidden" name="id" value="<%=co.getId()%>" /></td>
                            <td class='std'><input type="image" src="icones/mail_generic2.png" /></td>             
                            <td class='std'><%=co.getDatetime()%></td>
                            <td class='std'><%=co.getExpediteur()%></td>
                            <td class='std'><%=co.getObjet()%></td>
                            <td class='std'><%=co.getDestinataire()%></td>
                            <td class='std'><%=co.getTransmetteur()%></td>
                            <td class='std'><a href="CourrierController?action=delete&id=<%=co.getId()%>"><img src="icones/supprimer_16.png" /></a></td>
                        </tr>
                    </form>
                    <%
                }
            }
            %>
Je trouve que le code de ma jsp est encore trop fastidieux et n'apporte aucun intérêt de plus qu'avec l'utilisation classique avec des servlets, est ce que struts permet de simplifier son écriture ? J'ai l'impression de réinventer la roue.