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 2 Java Discussion :

Valeur des attributs d'une action gardée en mémoire sur différents exécutions


Sujet :

Struts 2 Java

  1. #1
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut Valeur des attributs d'une action gardée en mémoire sur différents exécutions
    Bonjour à tous

    J'ai un petit souci avec une de mes actions, mais je pense que le problème est plus général.

    J'ai un bean d'un côté du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class CreatePost extends ActionSupport implements CookiesAware,
          Preparable {
       private String name;
       private long eventId;
    }
    De l'autre, j'ai une jsp qui n'inclue le champs eventId que sous certaine condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
     
    Nom : <input type="text" name="name" />
     
    <s:if test="%{channel.events.size > 0}">
       Evènement :
       <select name="eventId">
          <option value="-1" selected>Aucun</option>
          <s:iterator value="channel.events">
             <option value="<s:property value='idEvent'/>"><s:property value='name'/></option>
           </s:iterator>
       </select>
    </s:if>
    (Je n'utilise pas la balise <s:form>, j'ai créé un composant qui permet de poster des formulaires en Ajax.)

    Voici donc le problème : si je fais un premier appel à cette fonction en spécifiant un eventId, celui-ci est bien enregistré, tout fonctionne bien.

    En revanche, si lors d'un 2è appel du formulaire, la condition %{channel.events.size > 0} n'est pas vérifiée, le champs n'est pas passé à l'action. Pendant le débogage, j'ai pu constater que la méthode de mon bean setEventId(..) n'était pas appelée, mais que la valeur de l'attribut eventId était resté en mémoire.

    Ce que j'aimerais, c'est que les attributs de mon action soient réinitialisés à chaque appel.

    Comment puis-je faire? Je pense que ceci est inhérent à une compréhension plus générale des scopes, et le problème que je rencontre ici peut se retrouver ailleurs dans le code.

    Merci pour votre aide !

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Je résoud mon propre problème : cela venait des beans struts créés dans spring. J'utilisais strust.objectFactory=spring dans mon struts.properties, et pour chaque action struts définie dans ces beans, spring créait les beans par défaut en singleton.

    Du coup 2 solutions s'offraient à moi : soit définir un scope=prototype dans mes beans, soit changer d'objectFactory pour org.apache.struts2.spring.StrutsSpringObjectFactory et me passer de la définition des beans des actions struts.

    J'ai opté pour la 2è solution.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/08/2014, 10h12
  2. Réponses: 1
    Dernier message: 25/03/2014, 16h01
  3. Réponses: 8
    Dernier message: 13/10/2008, 20h26
  4. Modif des attributs d'une balise <param> en javascript
    Par Henri dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/08/2005, 22h20
  5. Réponses: 2
    Dernier message: 27/03/2005, 16h09

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