Bonjour à tous,
j'ai développé une application Struts et jusque là tout se passait bien, sauf que c'est ma première application de ce type et que je ne savais pas qu'il fallait gérer le fait qu'il puisse y avoir plusieurs utilisateurs...enfin je précise, en PHP, quand je crée une variable de session, elle est unique et correspond à l'utilisateur qui l'a créé...et pour ça, je n'ai rien de spécial à faire, juste à lui donner un nom et une valeur.
Fin bref, ce n'est pas du PHP, et je pense que je dois très mal m'y prendre pour gérer mes variables de session sous Struts, et après recherche, je ne trouve pas de solution qui corresponde à mon souci.
Mon problème, c'est que quand un utilisateur saisie des données dans le formulaire, je stocke une partie de ces données dans des variables de session.
Or, lorsqu'il y a plusieurs utilisateurs, mettons que l'utilisateur 1 saisisse quelquechose avant l'utilisateur 2, eh bien l'utilisateur 2 verra apparaître en pré-remplissage dans son formulaire, tout ce qui a été saisi par l'utilisateur 1.
J'utilise Struts-Layout et de ce fait j'utilise les balises appropriées pour préremplir mon formulaire :
Pour le formulaire ici présent, il me serait peut être éventuellement possible de mettre le scope à request...mais le souci, c'est que certaines variables sont en session, parce que je les appelle un peu partout... comme c'est le cas du Siren du client que je veux afficher sur toutes les pages de mon application et que j'utilise même dans plusieurs actions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <layout:form action="/addClient" styleClass="FORM" styleId="addClient" > <!-- Affichage du Formulaire pré-rempli en mode Modification --> <layout:text property="siren" key="siren" bundle="resources" name="client" maxlength="9" styleClass="FORM" /> </layout:form>
J'ai lu des infos à propos de la méthode reset(), mais de ce que j'ai compris, elle ne réinitialise les données qui sont en scope request et pas en session...
Je vous passe les lignes de codes de ma Servlet dans laquelle je valorise la variable ci dessus (pour simplifier les choses, j'ai résumé le client à une seule propriété : le siren) :
Ici le code pour mon ActionForm :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public ActionForward sauvegarde(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession _session=request.getSession(); ClientForm clientForm=(ClientForm) form; Client client=new Client(); BeanUtils.copyProperties(client, clientForm); _session.setAttribute("client", client); return mapping.findForward("success"); }
Merci d'avance de vos réponses et/ou liens vers d'éventuelles pistes.
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 public class ClientForm extends ActionForm { private static final long serialVersionUID = 1L; private String siren; public String getSiren() { return siren; } public void setSiren(String siren) { this.siren = siren; }
Partager