Bonjour
j'aurrais une petite question concernant vos abitudes développement sur stuts2.
En effet, je suis entrain de développer une appli avec struts2 et certain petit soucis techniques me chagrinent un peu.
prenons un exemple,
je souahite développer un série d'écran me permettant de créer un users.
Les données:
User:
- username : le pseudo
- password : le mot de passe
- email : l'email
- codeIndividu : clef primaire de l'individu auquel est rataché le user
Individu:
- codeIndividu
- nom
- prenom
Les vues:
1 - vue de création du user (formulaire web)
- champ texte : username
- champ password : password
- champ teste : email
- liste déroulante : key = codeIndividu, value = nom + " " + prenom
2 - vue de résulat de la création du user.
Les actions:
1 - createUser : formulaire web de création
<result name="success" >jsp/createUser.jsp</result>
2 - doCreateUser : logique métier de la création d'un user
<result name="input" >jsp/createUser.jsp</result>
<result name="success" >jsp/resultCreateUser.jsp</result>
Questions
A partir d'ici j'ai une question existentiel, ci, ci je vous l'assure.
l'action createUser doit se connecter à une base de données pour récupérer la liste des individus.
A première vue je lancerais mon requettage à l'interieur de la méthode execute de l'action createUser. Cependant si l'utilisateur oubli par exemple de remplir le champ username.
La validation par doCreateUser va donc utlisé le result de nom input, mais voila, lorsque jsp/createUser.jsp sera affiché la liste déroulante n'aura pas de données. En effet le requettage est effectué dans la méthode de la l'action.
Alors je sais on peut utilisé le redirect-action, mais dans se cas l'a je perds les message d'erreurs.
Pour pallier se souci j'ai utilisé les tags jstl pour utiliser sql:query. Le but est de requetter à l'intérieur de la jsp. Seulement voila, sql;query me renvoie un ResultSet et la liste déroulante veux un type Map.
Et là c'est le drame, via ognl je souhaitais faire une petite boucle histoire de remplir une HashMap à partir du result. Mais pas moyen de trouvé comment faire.
Alors vous, vous faites comment ???????
merci,
Thibault
Partager