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 :

Setter appelés plusieurs fois


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut Setter appelés plusieurs fois
    Bonjour à tous,

    Déjà pour info je travaille avec struts 2.2.3.1

    J'ai un comportement bizarre sur une action sur laquelle je travaille. Lorsque je soumets un formulaire, voici l'ordre des méthodes invoquées :

    - les setters (à partir des données de mon formulaire) OK
    - la méthode invoquée par mon action (qui réinitialise certaines valeurs passées par mon formulaire) OK
    - les getters (pour afficher les données sur le formulaire) OK

    et là, je ne sais pas pourquoi mais il me ré-exécute les setters à partir des données de mon formulaire et donc écrase les changements que j'ai pu faire dans la méthode invoquée.

    Typiquement, j'ai un champ hidden qui est initialisé à 0 lors du premier appel de mon action.

    Lors de modifications sur l'écran, je le passe à 1 en javascript.

    Lors de la validation de mon formulaire, le setter prend le 1 en paramètre (normal). Dans ma méthode, je le repasse à 0. Mais ensuite le setter revient (le saligaud) et remet la valeur à 1.

    J'ai eu beau chercher sur le net, je n'ai pas trouvé de réponse. Alors si l'un d'entre vous à une petite idée, ça m'aiderait beaucoup.

    Merci d'avance,

    Shiv@

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Shiva

    Tu peux filer le .jsp et ta classe et le struts.xml s'il te plait.
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  3. #3
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Alors dans mon code tu vas voir que j'ai une action incluse dans ma jsp, je te rassure, j'ai déjà essayé sans la mettre et ça me fais la même chose

    J'ai aussi regardé les piles d'appel de mes setters et j'ai l'impression que mon intercepteur est en quelques sorte responsable des appels multiples à mes setters


    mon struts.xml :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
     
    	<include file="struts-default.xml" />
    	<constant name="struts.ui.theme" value="simple" />
    	<constant name="struts.devMode" value="true" />
    	<constant name="struts.url.includeParams" value="none" />
    	<constant name="struts.date.format" value="dd/MM/yyyy" />
    	<constant name="struts.action.extension" value="html,xml,pdf,xls,doc,csv" />
    	<constant name="struts.custom.i18n.resources" value="com.yyyyyy.xxxx.business.messages, package" />
    	<constant name="struts.objectFactory"
    		value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
     
    	<package name="struts-xxxx" extends="struts-default" abstract="true">
    		<result-types>
    			<result-type name="tiles"
    				class="org.apache.struts2.views.tiles.TilesResult" />
    			<result-type name="json" class="org.apache.struts2.json.JSONResult" />
    		</result-types>
    		<interceptors>
    			<interceptor name="hijaxResultInterceptor"
    				class="com.yyyyyy.xxxx.web.interceptor.HijaxResultInterceptor" />
    			<interceptor-stack name="xxxxStack">
    				<interceptor-ref name="hijaxResultInterceptor" />
    				<interceptor-ref name="defaultStack" />
    			</interceptor-stack>
    		</interceptors>
    		<default-interceptor-ref name="xxxxStack" />
    	</package>
     
    	<package name="navigate-xxxx" namespace="/dyn/protected"
    		extends="struts-xxxx">
     
    		<!-- Action incluse en haut de la jsp -->
    		<action name="menu" class="com.yyyyyy.xxxx.web.action.BlocDossierAction">
    			<result name="success" type="tiles">Menu</result>
    			<result name="input" type="tiles">Menu</result>
    		</action>
     
    		<!-- Action exécutée au chargement du formulaire -->
     
    		<action name="Rep" class="com.yyyyyy.xxxx.web.action.Rep">
    			<result name="success" type="tiles">Rep</result>
    		</action>
     
    		<!-- Action exécutée à la validation de mon formulaire -->
    		<action name="enregistrerRep" class="com.yyyyyy.xxxx.web.action.Rep"
    			method="enregistrer">
    			<result name="input" type="tiles">Rep</result>
    			<result name="success" type="tiles">Rep</result>
    		</action>
    	</package>
    </struts>

    mon fichier Rep.jsp

    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
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
     
    <!-- Action incluse -->
    <s:action name="menu" executeResult="true">
    	<s:param name="idDossier">
    		<s:property value="idDossier"></s:property>
    	</s:param>
    </s:action>
     
     
     
    		<s:form theme="simple" id="formRep">
    			<s:hidden name="idDossier" />
    			<s:hidden id="repModifiee" name="repModifiee" />
     
    <!-- Tout plein d'autres champs -->
     
    		        <s:submit value="Enregistrer" action="enregistrerRep" />
    		</s:form>
    ma classe :

    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
    package com.yyyyyy.xxxx.web.action;
     
    // mes imports
     
    public class Rep extends ActionSupport implements ServletRequestAware,
    		ServletResponseAware, Preparable {
     
    	/**
             * 
             */
    	private Long idDossier;
    	private String repModifiee;
     
     
    	public final String execute() {
     
                    //{ ... } initialisation de certaines valeurs
    		this.repModifiee = "0";
    		return Action.SUCCESS;
    	}
     
    	/**
             * Enregistrement
             */
    	public final String enregistrer() {
     
    		// { ... } Enregistrement des infos en base
    		this.repModifiee = "0";
    		return Action.SUCCESS;
     
    	}
     
    	public final Long getIdDossier() {
    		return this.idDossier;
    	}
     
    	public final void setIdDossier(final Long idDossier) {
    		this.idDossier = idDossier;
    	}
     
    	public final String getRepModifiee() {
    		return this.repModifiee;
    	}
     
    	public final void setRepModifiee(final String repModifiee) {
    		this.repModifiee = repModifiee;
    	}
    }

  4. #4
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Bon, j'ai testé sans mon interceptor, et c'est la même donc rien de ce côté là ...

Discussions similaires

  1. Faire appel plusieurs fois a un HTTPService ?
    Par piff62 dans le forum Flex
    Réponses: 3
    Dernier message: 08/07/2008, 10h32
  2. fonction rend visible champ appeler plusieurs fois
    Par djoyanna dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/06/2008, 17h34
  3. Init d'un servlet appelé plusieurs fois ?
    Par Eylir dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2008, 15h35
  4. Réponses: 22
    Dernier message: 02/01/2007, 09h14
  5. [C# 2.0] Pourquoi le load est-il appelé plusieurs fois ?
    Par Worldofdada dans le forum ASP.NET
    Réponses: 9
    Dernier message: 14/09/2006, 08h34

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