IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Action non déclenchée par un <html:link action="List">


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Action non déclenchée par un <html:link action="List">
    Hello,

    Je suis actuellement face un petit soucis :

    Lorsqu'un utilisateur se connecte à l'application, je stocke son utilisateur dans sa session par un request.getSession.setAttribute("user", user);

    Ensuite, il arrive à une welcome page où il y a un lien <html:link action="List.do">

    Un clic sur ce lien déclenche l'action qui va récupérer la liste des documents uploadés par cet utilisateur.

    Lorsque le premier utilisateur se connecte, et demande sa liste, l'action est correctement déclenchée et la liste des documents apparaît.
    Mais lorsqu'un deuxième utilisateur se connecte, et qu'il demande la liste des documents uploadés, il reçoit directement la liste de documents uploadés par le premier utilisateur, sans que l'action soit déclenchée.

    J'ai débuggé, et chaque utilisateur a bien son user en session.

    J'utilise JDevelopper 10.1.3.0.4 (SU5), avec OC4J.

    Quelqu'un aurait une idée ?

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu n'aurais pas par hasard déclaré une variable d'instance dans ton Action ?
    Peux-tu montrer le code de l'Action de path List ?
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Voici le code de l'action :

    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
     
    public class ListNotification extends Action {
     
    	private static Logger log = Logger.getLogger(ListNotification.class);
     
            private CustomObject coCurrentCompany;
     
    	private HospitalListNotifications form;
     
    	private Collection notificationList = null;
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
    			HttpServletResponse response) {
     
    		coCurrentCompany = (CustomObject) request.getSession().getAttribute("current_company");
    		this.form = (HospitalListNotifications) form;
     
    		if (this.form != null && this.form.getSearchButton().isSelected() && !this.form.getNotificationNumber().equals("")) {
    			getNotification(this.form.getNotificationNumber());
    			this.form.setSearchButton(new ImageButtonBean());
    		} else {
    			getAllNotifications();
    		}
     
    		return mapping.findForward(Constants.ACTIONFORWARD_HOSPITAL_LIST_NOTIFICATIONS);
    	}
     
    	private void getNotification(String notificationNumber) {
     
    		Folder notifFolder = null;
    		try {
    			notifFolder = (Folder) coCurrentCompany.getPropertyValue("NotificationFolder");
    		} catch (PropertyNotFoundException e) {
    			e.printStackTrace();
    		}
     
    		try {
    			DAOReader reader = DAOReaderFactory.newInstance().getHospitalNotificationByNumber(notificationNumber);
    			notificationList = reader.read(notifFolder);
    			this.form.setNotificationList(notificationList);
     
    		} catch (DAOFactoryException e) {
    			e.printStackTrace();
    		}
    	}
     
    	private void getAllNotifications() {
    		Folder notifFolder = null;
    		try {
    			notifFolder = (Folder) coCurrentCompany.getPropertyValue("NotificationFolder");
                            if(notifFolder == null) {
                                log.debug("Empty notiFolder");
                                return;
                            }
    		} catch (PropertyNotFoundException e) {
    			e.printStackTrace();
    		}
     
    		try {
    			DAOReader reader = DAOReaderFactory.newInstance().getAllNotificationReader();
    			notificationList = reader.read(notifFolder);
    			this.form.setNotificationList(notificationList);
     
    		} catch (DAOFactoryException e) {
    			e.printStackTrace();
    		}
    	}
     
    }

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Le problème semble être résolu.

    J'ai ajouté dans l'action la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.setHeader("Cache-Control", "no-cache");

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Pour info, lorsque tu déclares des variables d'instance dans une Action comme tu l'as fait ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private CustomObject coCurrentCompany;
     
    	private HospitalListNotifications form;
     
    	private Collection notificationList = null;
    ces variables sont partagées entre tous les utilisateurs, ce qui explique le fait que le deuxième utilisateur récupére la liste du premier.

    Si le partage n'est pas justifié, il faut donc définir les variables dans la méthode execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CustomObject coCurrentCompany = (CustomObject) request.getSession().getAttribute("current_company");
     
    HospitalListNotifications hospitalListNotifications=(HospitalListNotifications) form;
     
    Collection notificationList = null;
    Modératrice Java - Struts, Servlets/JSP, ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. <html:link action="" > :Passer plusieurs paramètres
    Par sisiniya dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/04/2011, 21h49
  2. [Mail] email html non interprété par outlook
    Par fletch dans le forum Langage
    Réponses: 2
    Dernier message: 11/12/2008, 14h15
  3. <html:link action="/action.do"> + des parametres
    Par anaaa dans le forum Struts 1
    Réponses: 3
    Dernier message: 21/06/2007, 22h51
  4. Réponses: 3
    Dernier message: 18/05/2007, 17h24
  5. Réponses: 4
    Dernier message: 02/04/2007, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo