Bonjour,
Je suis un débutant dans la conception d'application Web sous Java + Struts 1.3.8.

J'ai un petit problème avec la création d'un écran CRUD pour saisir ou modifier des informations.
Lorsque je saisie des informations, tout va bien, j'arrive a tout récuperer et enregistrer dans ma BDD. par contre quand je cherche à reafficher les informations dans le formulaire, j'ai uniquement l'adresse mémoire qui s'affiche.
Je ne sais pas trop d'ou cela peut provenir, quelqu'un peut-il m'aider ?

Voici les éléments:
le 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
		<form-bean
			name="prelevementBean"
			type="gmfvie.forms.PrelevementForm">
			<form-property
				name="id"
				type="java.lang.String" />
			<form-property
				name="commentaires"
				type="java.lang.String" />
			<form-property
				name="date_saisie_fiche"
				type="java.lang.String" />
			<form-property
				name="cg"
				type="java.lang.Integer" />
			<form-property
				name="famille"
				type="java.lang.Integer" />
			<form-property
				name="defauts" 
				type="java.lang.String[]"/>
			<form-property
				name="suggestions" 
				type="java.lang.String[]"/>
			<form-property
				name="type"
				type="java.lang.String" />
		</form-bean>
 
		<action
			path="/Prelevement"
			forward="/pages/prelevement.jsp" />
		<action
			path="/Listprelevement"
			type="gmfvie.action.ListPrelevementAction">
			<forward
				name="success"
				path="/pages/prelevements.jsp" />
		</action>
		<action
			path="/prelevement"
			name="prelevementBean"
			scope="request"
			validate="false"
			type="gmfvie.action.BuildPrelevementAction"
			input="/pages/acceuil.jsp" >
			<forward
				name="success"
				path="/pages/prelevement.jsp" />
		</action>
		<action
			path="/MAJprelevement"
			name="prelevementBean"
			scope="request"
			validate="true"
			type="gmfvie.action.PrelevementAction"
			input="/pages/prelevement.jsp" >
			<forward
				name="success"
				path="/Listprelevement.do" />
			<forward
				name="fin"
				path="/pages/message.jsp" />
		</action>
Le form:
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
@SuppressWarnings("serial")
public class PrelevementForm extends ActionForm{
 
	private Integer id=null;
	private String commentaire=null;
	private String date_saisie_fiche=null;
	private Integer cg=null;
	private Integer client=null;
	private Integer famille=null;
	private String[] defauts=null;
	private String[] suggestions=null;
	private String typeaction=null;
 
	public PrelevementForm() {
		// TODO Auto-generated constructor stub
		System.out.println("constructeur famille");
	}
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
	{
		ActionErrors errors = new ActionErrors();
		if (request.getParameter("Mode")==null)
		{
//			String libelle =getLibelle();
//			if (libelle==null||libelle.length()==0)
//			{
//				errors.add("libelle", new ActionMessage("errors.required","libelle"));
//			}
		}
		return errors;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getCommentaire() {
		return commentaire;
	}
	public void setCommentaire(String commentaire) {
		this.commentaire = commentaire;
	}
	public String getDate_saisie_fiche() {
		return date_saisie_fiche;
	}
	public void setDate_saisie_fiche(String date_saisie_fiche) {
		this.date_saisie_fiche = date_saisie_fiche;
	}
	public Integer getCg() {
		return cg;
	}
	public void setCg(Integer cg) {
		this.cg = cg;
	}
	public Integer getClient() {
		return client;
	}
	public void setClient(Integer client) {
		this.client = client;
	}
	public Integer getFamille() {
		return famille;
	}
	public void setFamille(Integer famille) {
		this.famille = famille;
	}
	public String[] getDefauts() {
		return defauts;
	}
	public void setDefauts(String[] defauts) {
		this.defauts = defauts;
	}
	public String[] getSuggestions() {
		return suggestions;
	}
	public void setSuggestions(String[] suggestions) {
		this.suggestions = suggestions;
	}
	public String getTypeaction() {
		return typeaction;
	}
	public void setTypeaction(String typeaction) {
		this.typeaction = typeaction;
	}
}
La classe build
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
public class BuildPrelevementAction extends Action{
	private PrelevementDAO myPrelevementDAO;
	private CGDAO myCGDAO;
	private ClientDAO myClientDAO;
	private DefautDAO myDefautDAO;
	private FamilleDAO myFamilleDAO;
	private String[] mySuggestionString;
	private String[] myDefautString;
 
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// La seule fonction ici est de préremplir le bean avant l'appel de la page.
		System.out.println("execute BuildPrelevementAction");
		myPrelevementDAO = (PrelevementDAO) getServlet()
		.getServletContext().getAttribute(Constants.PRELEVEMENT_DAO_KEY);
		myCGDAO = (CGDAO) getServlet()
		.getServletContext().getAttribute(Constants.CG_DAO_KEY);		
		myClientDAO = (ClientDAO) getServlet()
		.getServletContext().getAttribute(Constants.CLIENT_DAO_KEY);		
		myDefautDAO = (DefautDAO) getServlet()
		.getServletContext().getAttribute(Constants.DEFAUT_DAO_KEY);	
		myFamilleDAO = (FamilleDAO) getServlet()
		.getServletContext().getAttribute(Constants.FAMILLE_DAO_KEY);	
 
		Prelevement nvxPrelevement = new Prelevement();
		// on recupérer une référence sur le form
		PrelevementForm myForm =(PrelevementForm) form;
		try
		{
			List<CG> cglist=myCGDAO.getCGs();
			request.setAttribute("listcg", cglist);
			List<Client> clientlist=myClientDAO.getClients();
			request.setAttribute("listclient", clientlist);
			List<Defaut> defautbaselist=myDefautDAO.getDefautsBase();
			request.setAttribute("listdefautbase", defautbaselist);
			List<Famille> famillelist=myFamilleDAO.getFamilles();
			request.setAttribute("listfamille", famillelist);
 
			if(request.getParameter("id")==null){
				// pas de paramètre en entrée, pas de mise à jour du bean
				myForm.setTypeaction("new");
 
			} else {
				nvxPrelevement=myPrelevementDAO.getPrelevement(Integer.parseInt(request.getParameter("id")),getServlet()
						.getServletContext());
				// prérenseignement des champs
				myForm.setId(nvxPrelevement.getId());
				myForm.setCommentaire(nvxPrelevement.getCommentaire());
				myForm.setDate_saisie_fiche(nvxPrelevement.getDate_saisie_fiche());
				myForm.setFamille(nvxPrelevement.getFamille().getId());
				myForm.setCg(nvxPrelevement.getCg().getId());
				myForm.setClient(nvxPrelevement.getClient().getId());
				myDefautString=new String[nvxPrelevement.getDefauts().size()];
				for(int i=0;i<nvxPrelevement.getDefauts().size();i++){
					myDefautString[i]=(nvxPrelevement.getDefauts().get(i).getId().toString());
					System.out.println("defauts detail "+i+":"+nvxPrelevement.getDefauts().get(i).getId().toString());
 
				}
				System.out.println(myDefautString);
				myForm.setDefauts(myDefautString);
				mySuggestionString=new String[nvxPrelevement.getSuggestions().size()];
				for(int i=0;i<nvxPrelevement.getSuggestions().size();i++){
					mySuggestionString[i]=nvxPrelevement.getSuggestions().get(i).getCommentaire();
					System.out.println("suggest detail "+i+":"+nvxPrelevement.getSuggestions().get(i).getCommentaire());
				}
 
				System.out.println(mySuggestionString);
				myForm.setSuggestions(mySuggestionString);
				myForm.setTypeaction("modify");
			}
 
 
		}catch (Exception exc){
			System.out.println(exc.toString());
			return mapping.findForward("error");
		}
		return mapping.findForward("success");				
	}
 
	public BuildPrelevementAction() {
		// TODO Auto-generated constructor stub
	}
La page 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
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
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<html:base />
<title>Insert title here</title>
<script language="javascript">
function changeTypeaction(param){
document.forms.prelevementBean.typeaction.value=param;
document.forms.prelevementBean.submit();
}
</script>
</head>
<body>
<html:form action="MAJprelevement" method="POST">
	<hr />
	<table>
		<tr>
			<td><html:hidden property="id" /></td>
		</tr>
		<tr>
			<td><html:hidden property="typeaction" /></td>
		</tr>
		<tr>
			<td><bean:message key="prelevement.commentaire" /></td>
			<td><html:text property="commentaire" /></td>
		</tr>
		<tr>
			<td><bean:message key="prelevement.date_saisie_fiche" /></td>
			<td><html:text property="date_saisie_fiche" /></td>
		</tr>
		<tr>
			<td><bean:message key="prelevement.cg" /></td>
			<td><html:select property="cg">
			<html:option value=""></html:option>
			<c:forEach var="cgbase" items="${requestScope.listcg}">
				<html:option value="${cgbase.id}">${cgbase.initiale} - ${cgbase.nom} ${cgbase.prenom}</html:option>
			</c:forEach>
			</html:select></td>
		</tr>
		<tr>
			<td><bean:message key="prelevement.client" /></td>
			<td><html:select property="client">
			<html:option value=""></html:option>
			<c:forEach var="clientbase" items="${requestScope.listclient}">
				<html:option value="${clientbase.id}">${clientbase.matricule} - ${clientbase.nom} ${clientbase.prenom}</html:option>
			</c:forEach>
			</html:select></td>
		</tr>
		<tr>
			<td><bean:message key="prelevement.famille" /></td>
			<td><html:select property="famille">
			<html:option value=""></html:option>
			<c:forEach var="famillebase" items="${requestScope.listfamille}">
				<c:if test="${famillebase.actif==true}">
					<html:option value="${famillebase.id}">${famillebase.libelle}</html:option>
				</c:if>
			</c:forEach>
			</html:select></td>
		</tr>
		<tr>
			<td><bean:message key="prelevement.defauts" /></td>
			<c:forEach var="defautbase" items="${requestScope.listdefautbase}">
			<td><input type="checkbox" name="defauts" value="${defautbase.id}">${defautbase.libelle}</input></td>
			</c:forEach>
		</tr>
		<tr>
			<td><bean:message key="prelevement.suggestions" /></td>
			<td><html:text property="suggestions" /></td>
		</tr>
		<c:forEach var="suggest" items="${prelevement.suggestions}">
		<tr>
			<td><bean:message key="prelevement.suggestions" /></td>
			<td><html:text property="suggestions" value="${suggest}"/></td>
		</tr>
		</c:forEach>
		<tr>
			<td colspan=2><html:errors /></td>
		</tr>
	</table>
	<hr />
	<button type="reset">Effacer</button>
	<html:submit>Sauvegarder</html:submit>
	<c:if test="${prelevementBean.typeaction=='modify'}">
		<html:button property="toto" onclick="changeTypeaction('delete')">Supprimer</html:button>
	</c:if>
</html:form>
<html:link action="/home">Retour à la page d'acceuil</html:link>
 
</body>
</html:html>