Accéder au datasource à partir d'une ActionForm
Bonjour,
je voudrait afficher une liste d'éléments dans un formulaire, je veut donc dans mon bean ActionForm pouvoir récupérer cette liste dans ma base de données.
Dans mon struts-config j'ai configuré mon datasource :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<data-sources>
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="" />
<set-property property="url" value="" />
<set-property property="username" value="" />
<set-property property="password" value="" />
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false" />
<set-property property="validationQuery" value="SELECT 1 FROM dual" />
</data-source> |
j'arrive à acceder à ma base à partir d'une action :
Code:
1 2
|
dataSource = getDataSource(request); |
Cependant à partir de mon ActionForm je n'est pas la variable request. Comment doit-je récupérer le dataSource dans l'ActionForm ?
Merci pour vos réponses.
PS : je sait que ce n'est pas conseillé de configurer le datasource dans struts et qu'il serait plus interessant de le faire à partir de TomCat mais on me demande des résultats rapidement donc même si c'est mal programmé, le client veut le resultat :(
Accéder au datasource à partir d'un ActionForm
Bonjour,
Struts est un framework respectant le MVC2.
Ce type d'architecture impose qu'une application soit divisée en 3 parties complètement autonomes et distinctes.
C'est la raison pour laquelle les actionForm ne peuvent avoir un accès aux données
Donc pour initialiser tes actionForms, tu dois créer des Struts actions qui vont aller chercher les données dans ta base de donnée (ou mieux, dans une autre couche dite DAO) et les ajouter dans ton ActionForm.
Bonne continuation ;o)
Eric.
Accéder au datasource à partir d'un ActionForm
Pour mettre des données dans le ou les ActionForm(s), car tu peux avoir besoin de plusieurs formulaires, tu exécutes le genre de code suivant depuis ta fonction qui manipule les données :
Le code ci dessous récupère les annonces d'un utilisateur donné en paramètre.
Pour chaque résultat, je crée un objet ActionForm et je vais ajouter le titre de l'annonce dans l'actionForm.
Chaque actionForm (qui correspond à une annonce est référencé dans un ArrayList nommé "annonces"
Citation:
Utilisateur utilisateur = (Utilisateur) session.get(Utilisateur.class, new Integer(id));
ArrayList annonces = new ArrayList();
Iterator it = utilisateur.getAnnonces().iterator();
while (it.hasNext()) {
Annonce annonce = (Annonce) it.next();
AnnonceForm annonceForm = new AnnonceForm();
annonceForm.setTitre(annonce.getTitre());
annonces.add(annonceForm);
}
return annonces;
Et puis, depuis ma StrutsAction, je passe l'ArrayList en paramètre à ma JSP comme ceci :
Citation:
session.setAttribute("annonces", Modele.getUtilisateurAnnonces(u));
Et dans ma JSP, j'affiche les annonces via un iterate comme ca :
Citation:
<logic:iterate name="annonces" id="annonce" type="tfe.AnnonceForm">
<tr>
<td><bean:write name="annonce" property="titre" filter="true"/></td>
</tr>
</logic:iterate>