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

JavaScript Discussion :

Exécuter une fonction java à l'intérieur d'une fonction javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut Exécuter une fonction java à l'intérieur d'une fonction javascript
    Bonjour à tous,

    j'ai un problème avec l'exécution de la boucle while de mon javascript.
    Sur ma page jsp, j'ai le script ci-dessous qui me permet d'imprimer des données provenant de mon bean saisieReception

    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
     
    <h:panelGroup rendered="#{!saisieReception.multiPrintConditionnementVide}">
            <ui:param name="numCarton" value="#{saisieReception.currentConditionnements.indexOf(saisieReception.printConditionnement)+1}" />				
            <ui:param name="numCartonRsd" value="#{numCarton}/#{saisieReception.nbCartonRsd}" />
    	<ui:param name="numCartonHdd" value="#{numCarton}/#{saisieReception.nbCartonHdd}" />
            <script type="text/javascript">
    	          $(document).ready(function() {
    				alert("panel multiPrintConditionnement -> size = "+ '#{saisieReception.multiPrintConditionnement.size()}'); 
    				var i = '#{saisieReception.multiPrintConditionnement.size()}';
    				var test = 0;
    				while (i>0){							
    				     test = '#{saisieReception.impressionEtiquettes}';								
    				     alert("test print "+test);															
    				     printReception(1, '#{saisieReception.printConditionnement.itemId}', '#{saisieReception.currentArticle.pn}','#{saisieReception.numeroReception}', '#{saisieReception.currentFabricant.referenceFabricant}','#{saisieReception.currentArticle.libArticle}', #{saisieReception.printConditionnement.quantite},'#{saisieReception.currentArticle.hdd ? numCartonHdd : numCartonRsd}','#{saisieReception.formattedDateReception}', '#{saisieReception.currentPays.idePays}','#{saisieReception.currentAffectation.idEmplacement}');
    				     i--;
    				}			
    	   });
            </script>
    </h:panelGroup>
    dans mon while j'appelle une fonction du bean saisieReception.getImpressionEtiquettes qui met à jour mon objet saisieReception.printConditionnement ce objet est ensuite passé en paramètre à la function javascript printReception() pour impression, ci-dessous la fonction du bean saisieReception.getImpressionEtiquettes
    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 Integer getImpressionEtiquettes(){
    		if(inc < nbConditionnement){
    			clearPrintConditionnement();
    			setPrintConditionnement(multiPrintConditionnement.get(inc));
    			inc = inc +1;
    			LOGGER.info("inc => " +inc);
    			return inc;
    		}else {
    			LOGGER.info("dans le else => " +inc); // à ce niveau inc doit etre = à nbConditionnement
    			inc = 0;
    			return 0;
    		}
    	}
    mon problème c'est que la fonction saisieReception.getImpressionEtiquettes n'est appelé qu'une seule fois dans la boucle while ce qui fait que: si par exple mon i = 4 dans le while, il boucle bien 4 fois et imprime 4 étiquettes mais avec les memes données parce que la fonction saisieReception.getImpressionEtiquettes est exécutée une seule fois

    Quelqu'un aurait-il une idée du pourquoi ma boucle while de ma fonction javascript n'appelle qu'une fois au premier tour la fonction du bean et pas les autres fois? Je vous remercie d'avance!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    Citation Envoyé par nakry Voir le message

    Quelqu'un aurait-il une idée du pourquoi ma boucle while de ma fonction javascript n'appelle qu'une fois au premier tour la fonction du bean et pas les autres fois? Je vous remercie d'avance!
    salut

    oui tu confonds exécution coté client (navigateur web - javascript) et coté serveur. (JSP)

    regarde ton code source dans le navigateur, tu vas comprendre. Ta boucle javascript boucle 4 fois (i fois) sur les mêmes données

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut
    Citation Envoyé par fredoche Voir le message
    regarde ton code source dans le navigateur, tu vas comprendre. Ta boucle javascript boucle 4 fois (i fois) sur les mêmes données
    oui j'ai vu le code source dans le navigateur et je crois comprendre ce que tu veux dire,

    mais justement la méthode java qui est à l'intérieur du while est censé raffraichir ces données,

    ce que je ne comprends pas c'est que cette méthode est quand meme appelée une fois dans le while pas les autres fois

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    la méthode est appelée une fois coté serveur, elle insère les données dans ton flux http, ta page html par exemple

    la boucle est exécutée coté client, elle est appelée i fois, mais les données ont déjà été insérées coté serveur, elle ne changeront pas si tu gardes ce schéma d'exécution

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut
    Merci fredoche pour cet éclairecissement, je vais éssayer une autre méthode (les web service par exemple) je vous tiens au courant de l'avancé


  6. #6
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    Salut,

    Tu ne veux pas regarder tu coté de l'ajax avant d'aller regarder les webservices...

    ++

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/04/2012, 16h55
  2. Réponses: 7
    Dernier message: 20/02/2012, 09h01
  3. Réponses: 1
    Dernier message: 27/11/2008, 16h47
  4. Réponses: 1
    Dernier message: 26/08/2008, 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