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

Spring Web Java Discussion :

Refresh JSP après requête AJAX


Sujet :

Spring Web Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut Refresh JSP après requête AJAX
    Bonjour,

    Je travaille avec Spring MVC 3.2 et jQuery pour le support d'AJAX.
    Je suis habitué à utiliser JSF et l'attribut rerender dans mes actions AJAX pour mettre à jour un élément dans mes JSP.

    Sauf qu'avec Spring MVC, je n'arrive pas à reproduire cette fonctionnalité. En effet, je veux mettre à jour par exemple un form après une requête AJAX.
    Dans mon controller, j'insère des modelattribute que je veux mettre à jour dans ma page JSP.

    Quelqu'un saurait-il m'indiquer comment procéder ?

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Je ne connais pas assez JSF pour savoir ce qu'il fait dans ce cas, mais voici ce que je ferai avec JQuery.

    Si j'ai bien compris, vous voulez mettre à jour un formulaire à la reception d'une réponse AJAX. Pour cela, JQuery permet de manipuler le DOM. On peut changer la valeur d'un champ en écrivant $("#formId input[name=field]").val(value) où formId est l'id du formulaire et field le nom du champ.

    Si vous avez beaucoup de champs et de formulaires, ça peut nécessiter beaucoup de travail, mais on peut automatiser pas mal de choses. En particulier, si les champs de votre réponse Ajax correspondent aux noms des champs HTML, on peut utiliser une boucle.

    Le JSON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
        champ1: "valeur",
        champ2: "valeur2"
    }
    Le HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form id="form">
        <input type="text" name="champ1"></input>
        <input type="text" name="champ1"></input>
    </form>
    La fonction Javascript à mettre en commun pour tous vos formulaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function updateFormFromJson(formId, json) {
        for(var fieldName in json) {
            var field = $('#' + formId + ' input[name=' + fieldName + ']');
            field.val(json[fieldName]);
        }
    }
    Et à la reception de la réponse Ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        updateFormFromJson('form', data);
    Code non testé.
    Il y aurait des améliorations à apporter. Gérer l'échappement des caractères spéciaux en particulier. Vous pourriez aussi ajouter une mise en forme automatique des champs date etc.

Discussions similaires

  1. Plugin non fonctionnel après requête AJAX
    Par florianlyon dans le forum jQuery
    Réponses: 8
    Dernier message: 05/07/2011, 08h56
  2. redirection après requête AJAX
    Par splifferwolf dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2010, 15h58
  3. [AJAX] Réponse après requête ajax
    Par bisvan dans le forum AJAX
    Réponses: 2
    Dernier message: 10/12/2009, 17h08
  4. plus de javascript aprés requéte ajax pour mon menu
    Par pouktoro dans le forum jQuery
    Réponses: 2
    Dernier message: 23/10/2009, 13h44

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