Bonjour et bonne année a tous.
Je souhaite afficher une grille de données sous forme d'un tableau à plusieurs dimensions a partir d'une BDD avec la possibilité de modifier et enregistrer les données de chaque champ :
Mon application (pour les RH) est : une table de 5 colonnes [position] (ingénieur, Technicien, Commerciale....etc), [salaire minimum] (chiffe modifiable formaté en euros), [salaire moyen], [salaire maximum], [type de contrat] (CDD, CDI...).

le tout avec un petit menu de recherche selon (type de contrat et le salaire max) dans la même JSP.

Le tableau ressemble à ceci avec seulement les chiffres modifiable
--------------------------------------------------------------------------
|Position | Salaire minimum| Salaire moyen| Salaire maximum| Type de contrat|
--------------------------------------------------------------------------
|ingenieur | 45 000,00 Eur | 55 000,00 | 75 000,00 | CDD |
--------------------------------------------------------------------------
|technicien | 25 000,00 | 35 000,00 | 55 000,00 | CDI |
--------------------------------------------------------------------------

- J'ai suivi l'exemple du tutorial mais ça ne marche pas comme il faut, je ne sais pas si j'ai oublié qq chose.

Voici le code au complet:

FORM BEAN avec les GET/SET

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
package com.foo.datagrid;
 
import org.apache.struts.action.ActionForm;
import fr.improve.struts.tagli.layout.datagrid.Datagrid;
 
public class DatagridForm extends ActionForm {
	private Datagrid datagrid;
 
	public void setDatagrid(Datagrid in_datagrid) {
		datagrid = in_datagrid;
	}
	public Datagrid getDatagrid() {
		return datagrid;
 	}
 
}
L'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
package com.foo.datagrid;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
import org.apache.struts.actions.DispatchAction;
 
import fr.improve.struts.taglib.layout.datagrid.Datagrid;
 
public class DatagridAction extends DispatchAction {
 
	public ActionForward display(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse reponse) {	
		DatagridForm lc_form = (DatagridForm) actionForm;
 
		// Get an object list.
		List salaireList = salaire.ListSalaire();
 
		// Create a datagrid.
		Datagrid lc_datagrid = Datagrid.getInstance();
 
		// Set the bean class for new objects. We suppose SomeBean is the class of the object in the List aList.
		lc_datagrid.setDataClass(Salaire.class);
 
		// Set the data
		lc_datagrid.setData(salaireList);
 
		// Initialize the form
		lc_form.setDatagrid(lc_datagrid);
 
		// Forward to the jsp.
		return actionMapping.findFoward("jsp");
	}

Mon DataAccess pour la BDD


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
public DataGridForm() throws Exception {
        ArrayList salaires = new ArrayList();
        Salaire objSalaire;
 
datagrid = Datagrid.getInstance();
	datagrid.setDataClass(salaire.class);
	datagrid.setData(liste);
 
        ResultSet rs = null;
        CallableStatement callStmt = null;
 
        ctx.setMethodName("DataGridForm");
        ctx.setStoredProcedureName("SALAIRE_GET");
 
        callStmt = con.prepareCall("CALL SALAIRE_GET()");
 
        callStmt.execute();
        rs = callStmt.getResultSet();
 
        while (rs != null && rs.next()) {
            objSalaire = new salaire ();
            objSalaire.setPosition(rs.getString("Position"));
            objSalaire.setSalaireMin(rs.getDouble("Salaire Minimum"));
            objSalaire.setSalaireMoy(rs.getDouble("Salaire Moyen"));
            objSalaire.setSalaireMax(rs.getDouble("Salaire Maximum"));
            objSalaire.setTypeContrat(rs.getString("Type de Contrat"));
            salaire.add(objSalaire);
        }
 
        if (rs != null) {
            rs.close();
            rs = null;
        }
        if (callStmt != null) {
            callStmt.close();
            callStmt = null;
        }
 
        return salaires;
    }
ma class salaire bean

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
Public class salaire {
	Protected String position;
	Protected Double salaireMin;
        Protected Double salaireMoy;
        Protected Double salaireMax;
        Protected String typeContrat;
 
Public String getPosition(){
        Return (position);
}
Public void setPosition (String newPosition){
	Position = newPosition;
}}
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
<layout:html>
	<layout:form action="myAction" styleClass="FORM">
		<layout:text key="search.salaireMax" property="salaireMax" styleClass="FIELD"/>
		<layout:text key="search.typeContrat" property="typeContrat" styleClass="FIELD"/>
		<layout:submit>
			<layout:message key="search.submit"/>
		</layout:submit>
		<layout:collection name="salaire" styleClass="ARRAY">
			<layout:collectionItem title="salaire.position" property="position"/>
			<layout:collectionItem title="salaire.salaireMin" property="SalaireMin"/>
			<layout:collectionItem title="salaire.salaireMoy" property="salaireMoy"/>
			<layout:collectionItem title="salaire.salaireMax" property="salaireMax"/>
                        <layout:collectionItem title="salaire.typeContrat" property="typeContrat"/>
		</layout:collection>
	</layout:form>
</layout:html>
Struts-Config

<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
...
	<form-beans>
		<form-bean name="datagridForm" type="com.foo.datagrid.DataGridForm"/>
		...
	</form-beans>
 
	<action-mappings>
		<action path="/datagrid"
				name="datagridForm"
				type="com.foo.datagrid.DatagridAction"
				validate="false"
				parameter="reqCode"
				scope="session">
			<forward name="jsp" path="/datagrid.jsp"/>
		</action>
		...
	</action-mappings>
	...
</struts-config>