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 :

getInputForward et perte d'infos


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Par défaut getInputForward et perte d'infos
    Bonjour à tous.

    Bon alors voila, je ne suis pas depuis longtemps dans l'utilisation de Struts, j'ai pas non plus pour habitude de poster au moindre problème, mais là je ne trouve pas de réponse à mon problème.

    Alors je vais essayer de synthétiser comme il se doit.

    J'ai une page JSP avec deux listes et un bouton. Quand je clique sur le bouton je vais dans ma classe d'Action (Dispatch action vous comprendrez pourquoi ensuite)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public final ActionForward raffraichir(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
     final HttpServletResponse arg3) throws Exception {
    		ConfigEntraideActionForm monForm = (ConfigEntraideActionForm) form;
    		IEntraideManager entraideManager = new EntraideManager();
    		Collection listeSiteFlux = entraideManager.getListeInfoEntraide(monForm.getEdg(), monForm.getIdFlux());
    		monForm.setListeSiteFlux(listeSiteFlux);
    		return mapping.getInputForward();
    	}
    Dans ce bout de code je récupère les infos selectionnées dans ces deux liste en je renvois le tout sur la même page.

    Cette même page :

    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
    <html:form action="/configEntraide">
    	<table class="tableGeneric" cellspacing="3" align="center">
    		<html:hidden property="hidden" value="default" />
    		<tr>
    			<td>Entité de Gestion</td>
    			<td><html:select property="edg">
    				<html:optionsCollection property="listeEdg" value="edg" label="libelleComplet" />
    			</html:select></td>
    		</tr>
    		<tr>
    			<td>Flux</td>
    			<td><html:select property="idFlux">
    				<html:optionsCollection property="listeFlux" value="idFlux" label="libelleComplet" />
    			</html:select></td>
    		</tr>
    		<tr>
    			<td colspan="2" align="center"><html:submit onclick="javascript:setHidden('raffraichir');">Afficher</html:submit>
    		</tr>
    	</table>
    	<logic:notEmpty name="ConfigEntraideActionForm"  property="listeSiteFlux" >
    	<table>
    	<logic:iterate name="ConfigEntraideActionForm" property="listeSiteFlux" id="SiteFlux" indexId="itt">
    				<tr>
    					<td><html:text name="SiteFlux" property="idSite" /></td>
    					<td><html:text name="SiteFlux" property="idFlux" /></td>
    					<td><html:text name="SiteFlux" property="flagMutu" /></td>
    					<td><html:text name="SiteFlux" property="poidsAgent" /></td>
    					<td><html:text name="SiteFlux" property="flagEntraidant" /></td>
    					<td><html:text name="SiteFlux" property="seuil" /></td>
    				</tr>
    	</logic:iterate>
    	</table>
    	</logic:notEmpty>
    	<html:submit onclick="javascript:setHidden('enregistrer');">Enregistrer</html:submit>
    </html:form>
    Donc suite au rafraichissment de la page je récupère cette liste d'objet info.

    Je modifie un champs et je valide :

    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
    public final ActionForward enregistrer(final ActionMapping mapping, final ActionForm form, 
    final HttpServletRequest request, final HttpServletResponse arg3) throws Exception {
    		try {
    			ConfigEntraideActionForm monForm = (ConfigEntraideActionForm) form;
    			IEntraideManager entraideManager = new EntraideManager();
    			SiteFlux infos = null;
    			Iterator listeSiteFlux = monForm.getListeSiteFlux().iterator();
    			while (listeSiteFlux.hasNext()) {
    				infos = (SiteFlux) listeSiteFlux.next();
    				entraideManager.setInfosEntraide(infos);
    			}
    		} catch (Exception e) {
    			logger.error(e);
    		}
    		return mapping.getInputForward();
    	}
    Mais voila le hic : listeSiteFlux est null.

    Là je comprend pas. Pourtant au rafraichissement la liste est bien affichée

  2. #2
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Petite précision c'est ton "getListeSiteFlux()" de type Collection ou ton listeSiteFlux de type iterator qui est nul ? Tu peux montrer ton form ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Par défaut
    C'est l'objet qui est nul


    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
           /**
             * Serial ID
             */
    	private static final long serialVersionUID = -5020361152552222561L;
     
    	private Collection listeEdg;
     
    	private Collection listeFlux;
     
    	private Collection listeSiteFlux;
     
    	private EdgFlux edgFlux;
     
    	private String edg;
     
    	private String idFlux;
     
    	public EdgFlux getEdgFlux() {
    		return edgFlux;
    	}
     
    	public void setEdgFlux(EdgFlux edgFlux) {
    		this.edgFlux = edgFlux;
    	}
     
    	public Collection getListeEdg() {
    		return listeEdg;
    	}
     
    	public void setListeEdg(Collection listeEdg) {
    		this.listeEdg = listeEdg;
    	}
     
    	public Collection getListeFlux() {
    		return listeFlux;
    	}
     
    	public void setListeFlux(Collection listeFlux) {
    		this.listeFlux = listeFlux;
    	}
     
    	public Collection getListeSiteFlux() {
    		return listeSiteFlux;
    	}
     
    	public void setListeSiteFlux(Collection listeSiteFlux) {
    		this.listeSiteFlux = listeSiteFlux;
    	}
     
    	public final ActionErrors validate(final ActionMapping mapping, final HttpServletRequest request) {
    		return null;
    	}
     
    	/**
             * Appalé à l'initialisation de la page
             */
    	public void reset(ActionMapping mapping, HttpServletRequest request) {
    		IEdgManager edgManager = new EdgManager();
    		IFluxManager fluxManager = new FluxManager();
    		this.listeEdg = edgManager.getEdg();
    		this.listeFlux = fluxManager.getFullFlux();
    	}
     
    	public String getEdg() {
    		return edg;
    	}
     
    	public void setEdg(String edg) {
    		this.edg = edg;
    	}
     
    	public String getIdFlux() {
    		return idFlux;
    	}
     
    	public void setIdFlux(String idFlux) {
    		this.idFlux = idFlux;
    	}
     
    	public ActionErrors validate(ActionMapping arg0, ServletRequest arg1) {
    		// TODO Auto-generated method stub
    		return super.validate(arg0, arg1);
    	}

    Par contre j'ai une piste.

    En supprimant scope="request" du stuts-config j'ai plus le même soucis. La liste n'est plus vide mais elle n'a pas pris en compte mes modifications...

    Je le mets toujours cet attribut, sans jamais vraiment savoir ce que c'est exactement. Je vais me documenter sur les sujet.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Par défaut
    Fausse piste je crois...

    Je donne quand même la ligne du config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <action path="/configEntraide" name="ConfigEntraideActionForm" type="ft.webroutage.control.entraide.ConfigEntraideAction" 
    scope="request" validate="true" input="/jsp/options/configEntraide.jsp"  unknown="false" parameter="hidden">

  5. #5
    Expert confirmé

    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
    Par défaut
    Il faut mettre le scope à session et pour que les mises à jour soient prises en compte, utilise plutôt les tags nested comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <nested:iterate property="listeSiteFlux">
    <tr>
       <td><nested:text property="idSite" /></td>
       <td><nested:text property="idFlux" /></td>
       <td><nested:text property="flagMutu" /></td>
       <td><nested:text property="poidsAgent" /></td>
       <td><nested:text property="flagEntraidant" /></td>
       <td><nested:text property="seuil" /></td>
    </tr>
    </nested:iterate>

  6. #6
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Salut C_nvy, peux-tu préciser l'intérêt et les différences entre les tags :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text> et <nested:text>

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

Discussions similaires

  1. Perte d'info au démarrage
    Par frakosun dans le forum Windows XP
    Réponses: 2
    Dernier message: 27/12/2009, 21h57
  2. Perte d'info sur un disque de stockage
    Par cdsoft dans le forum Administration système
    Réponses: 3
    Dernier message: 28/01/2009, 23h03
  3. compilation tex => dvi => pdf : Perte d'infos
    Par Nicomart dans le forum Mise en forme
    Réponses: 3
    Dernier message: 12/03/2008, 19h22
  4. Perte d'info avec ADO.
    Par auroreM dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 06/04/2007, 09h49
  5. Pertes d'infos sur un objet
    Par dst dans le forum Langage
    Réponses: 1
    Dernier message: 05/08/2006, 15h03

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