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 :

[AJAX] Récupérer valeurs formulaires


Sujet :

Struts 1 Java

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut [AJAX] Récupérer valeurs formulaires
    Bonjour,

    Dans une JSP je fais une requête AJAX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var lien = "comTesterAjax.do";
    xhr.open("post", lien, true);
    xhr.send(null);
    ... vers une Action avec la configuration Struts suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <action
                 path="/comTesterAjax" 
                 type="pages.com.TesterAction"
                 name="ComTesterForm"
                 scope="request"
                 validate="false" />
    Le dialogue client / serveur fonctionne bien.

    Mon soucis est de pouvoir récupérer les variables du formulaire dans le execute du Action via une commande de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
        {
    TesterForm formulaire = (TesterForm) form;
    System.out.println("valeur de la variable => " + formulaire.getVariable());
     
    ... suite du code
     
    }
    ... mais la variable du formulaire est égale à null;

    Peut-on récupérer les valeurs du formulaire dans une requête AJAX ?
    Et comment fait-on cela ?

    Merci.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var lien = "comTesterAjax.do";
    xhr.open("post", lien, true);
    xhr.send(null);
    donc tu n'envoies aucune donnée ;-)
    Attention, ce n'est pas parce que tu en POST que le formulaire est envoyé, c'est à toi de l'envoyer manuellement..
    Comme tu es en POST, n'oublies pas de configurer le content-type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    data = "champ1=" + document.getElementById('champ1').value +  "&champ2=" + document.getElementById('champ1').value;
    xhr.send(data);

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Merci mattheox pour tes explications qui sont intéressantes.

    Mais je ne comprends pas pourquoi je suis obligé d'envoyer manuellement les données du formulaire puisque je travaille avec struts : cela m'étonne que cela n'est pas été prévu.

    Qu'en penses-tu ?

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    - struts fonctionne avec une soumission de formulaire (submit()).
    - ajax ne fonctionne pas avec une soumission de formulaire, c'est ce qui fait son charme et son utilité.

    en général, avec Ajax, on ne veut envoyer qu'une partie du formulaire, sinon autant envoyer tout le formulaire... sans utiliser Ajax.
    et il est possible d'envoyer alors une/plusieurs valeur(s) à une action struts, mais il faut bien penser à envoyer les valeurs des données : clé et valeur , comme dans une url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var url = "monAction.do?name=toto";
    xhr.open("get", url, true);
    xhr.send(null);
    après si tu as défini ton form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class MonForm extends ActionForm {
     private String name;
     setter/getter
    }
    et que dans le struts-config.xml, tu fais bien référence à ce form, tu auras la valeur toto dans MonForm.getName()!

    Attention :
    avec la méthod GET, pour les mêmes valeurs de l'url, Internet Explorer garde en cache le résultat de la requête ajax et ne fait pas obligatoirement l'appel au serveur, le seul moyen est de passer par une requête POST; firefox fait bien l'appel à chaque fois au serveur en GET!

  5. #5
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Merci beaucoup mattheox.

    Au moins tu maîtrises ce sujet.

    Une dernière petit question qui suit ce que tu as signalé :
    Citation Envoyé par matteox
    Comme tu es en POST, n'oublies pas de configurer le content-type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    ... est ce que côté serveur je dois renseigner le Content-Type, et de quelle manière ?

    Par exemple pour envoyer du html je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("text/html");
    Merci encore.

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    Citation Envoyé par Mister Nono
    Une dernière petit question qui suit ce que tu as signalé :

    ... est ce que côté serveur je dois renseigner le Content-Type, et de quelle manière ?

    Par exemple pour envoyer du html je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("text/html");
    Merci encore.
    il vaut toujours mieux indiquer le Content-type quand tu le connais, ça aide le navigateur a bien interprété le flux qu'il reçoit.
    si tu veux envoyer un fichier xls... il faut l'indiquer pour éviter qu'il ne l'interprète comme du html ;-)

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

Discussions similaires

  1. [script.aculo.us] Ajax.Autocompleter : récupérer valeurs et les rapatrier vers champs hidden d'un formulaire
    Par almoha dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 01/07/2011, 13h54
  2. [AJAX] Récupérer directement les données d'un formulaire
    Par linar009 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/12/2007, 13h55
  3. Récupérer valeur champs de formulaire dynamique
    Par antillejj dans le forum ASP
    Réponses: 1
    Dernier message: 22/12/2006, 07h17
  4. Récupérer valeur du formulaire
    Par acado dans le forum Langage
    Réponses: 4
    Dernier message: 02/05/2006, 15h00
  5. Réponses: 1
    Dernier message: 22/12/2005, 11h29

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