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

Servlets/JSP Java Discussion :

Pb IE - Appel d'une servlet sans retour de donnée : ouverture intempestive de pop-up


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Pb IE - Appel d'une servlet sans retour de donnée : ouverture intempestive de pop-up
    Bonjour

    Je suis confronté à un problème que je peine à résoudre.

    Le contexte est le suivant :
    depuis la page principale de ma webapp, j'ouvre une pop-up qui contient un formualire HTML. A la validation, les données de ce formulaires sont envoyées vers une servlet qui les utilise pour modifer un enregistrement en BDD. Dans ce cas précis, la servlet n'a pas de données à renvoyer vers le navigateur. Je souhaite donc que la pop-up se ferme après validation du formulaire afin que l'utilisateur revienne à l'interface principale.

    Voici le code javascript que j'ai utilisé (inclus dans la pop-up):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	function registerDatas(key){
    		var form = document.forms.send;
     
    		form.Key.value=key;
    		form.submit();
       		window.close();		
    	}
    "send" étant l'id de mon formulaire, l'appel à la servlet étant classiquement implémenté dans l'attribut "action" de mon formulaire.

    Sous FireFox, tout se passe comme souhaité, en revanche sous IE, le navigateur ferme la pop-up et rouvre une fenête vide avec une URL du type: http://host/webapp/maservlet

    Comment faire pour éviter l'ouverture intempestive de cette fenêtre.

    Complément : je n'utilise pes des JSP pour générer mes pages HTML mais des templates FreeMarker.

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Personnellement, j'utiliserais la sortie de la servlet pour fermer la page en balançant la commande via response.getWriter()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html>
    <body>
    <script>window.close();</script>
    </body>
    </html>

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour l'astuce.

    Elle fonctionne assez bien, mais on voit la fameuse fenêtre intempestive qui s'ouvre, puis se ferme immédiatement, ce qui ne fait pas "propre"

    En effet, pour une raison qui m'échappe, IE refuse de charger le retour de la servlet dans ma pop-up originale, les différentes valeurs possible de l'attribut target n'y ont rien changé.

  4. #4
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai réussi à corriger mon problème : j'ai donné un nom à ma fenêtre pop-up, nom que j'ai utilisé pour l'attribut "target" de mon formulaire. Le retour de la servlet se charge alors dans la bonne fenêtre et la solution de OButterlin fonctionne à merveille.

    Voici les portions de code correspondants :

    formulaire HTML dans la pop-up:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    <body onload="nameWindow();">    
    ...
      <form id="work" action="maServlet" method="post" target="monNomDeWindow">
    ...
    code Javascript dans la pop-up :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function nameWindow(){
      self.name="monNomDeWindow";
    }
     
    function validate(){
          var form = document.forms.work
          ...  	
          form.submit();			
    }
    code html renvoyé par la servlet (celui proposé par OButterlin ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html>
    <body>
    <script>window.close();</script>
    </body>
    </html>

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/06/2007, 17h25
  2. appel d'une Action sans Formulaire
    Par don'de dans le forum Struts 1
    Réponses: 8
    Dernier message: 21/03/2007, 16h48
  3. Appeler juste une fonction sans include
    Par laurent_ifips dans le forum Langage
    Réponses: 5
    Dernier message: 23/11/2005, 00h08
  4. Appel d'une servlet
    Par ptitsoleil87 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 14/02/2005, 12h18
  5. [Debutant(e)]Appel d'une servlet dans une page jsp
    Par kouadjalain dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 20/07/2004, 16h02

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