Bonjour,
debutant java-struts, je cherche a faire qq chose qui a forcement ete fait 1 000 000 000 de fois au minimum et pour lequel je ne trouve aucune explication claire sur le net (alors que j'imagine que ca doit exister forcement, mais la saloperie de proxy ici filtre 99% des sites, heureusement pas dvp).
Le truc est simplement le remplissage d'une liste select avec des valeurs en base, j'ai un objet BDD qui contient une methode static get comme suit :
La copie de vecteur ne me plait deja pas des masses dans ce code, mais passons....
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 public class BDD implements java.io.Serializable { private int idBDD; private String nom; public BDD() {} public int getIdBDD() { return this.idBDD; } public String getNom() { return this.nom; } public static BDD[] getListeBDD(Connection connexion) { CallableStatement st = null; ResultSet rs = null; String requete = "BEGIN ? := get_BDDs(); END;"; ArrayList listeBDD = new ArrayList(); BDD lBDDRetour[] = null; try { st = connexion.prepareCall(requete); st.registerOutParameter(1, OracleTypes.CURSOR); st.execute(); rs = (ResultSet) st.getObject(1); while(rs.next()) { BDD maBDD = new BDD(); maBDD.setIdBDD( rs.getInt("idBdd") ); maBDD.setNom( rs.getString("nom") ); listeBDD.add( maBDD ); } rs.close(); st.close(); BDD lBDD[] = new BDD[listeBDD.size()]; for ( int i = 0; i < listeBDD.size(); i++ ) { lBDD[i] = (BDD) listeBDD.get(i); } lBDDRetour = lBDD; } catch(Exception ex) { ex.printStackTrace(); } return lBDDRetour; } }
dans mon fichier de config struts :
Ce qui me permetra de mettre la valeur initiale de ma combo quand j'aurai trouve la syntaxe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <form-bean name="frmBDD" type="org.apache.struts.action.DynaActionForm"> <form-property name="id" type="java.lang.Integer"/> <form-property name="description" type="java.lang.String"/> <form-property name="idSchemaBaseOrg" type="sgdt.metier.BDD[]"/> </form-bean>
(j'ote ce qui ne sert a rien pour mon probleme)
dans mon action :
et dans ma 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 public class ActionBDD extends ActionFWT { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, SQLExc eption { Connection lCnx = null; DynaActionForm lForm = (DynaActionForm) form; // Lecture de la table BDD pour remplir la combo. System.out.println("Lecture combo"); if ( lCnx == null ) { lCnx = getConnection(request); } BDD lBDDs[] = BDD.getListeBDD(lCnx); request.setAttribute("beanBDD", lBDDs); return mapping.findForward("next"); } }
qui genere le superbe code d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <html:options name="beanBDD" property="idBDD" labelProperty="nom"/>
Qu'ai-je donc completement loupe comme notion ???javax.servlet.ServletException: No getter method available for property idBDD for bean under name beanBDD
Toute aide est la bienvenue car la je seche et personne autour de moi ne semble apte a me fournir un coup de main digne de ce nom.
Merci d'avance
Fred.
Partager