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 2 Java Discussion :

Grosse différence de code après requête ajax


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut Grosse différence de code après requête ajax
    Bonjour.

    Pour mon appli, sur une page, j'ai un select (fait avec Struts2).

    Afin de pouvoir faire une "mise à jour" du select suite envoi de données dans la base, celui-ci est dans une jsp différente (donc include dans la page).

    Dans mon code de ma JSP, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="select_employe" class="hidden col-md-3 input-group">
           <s:include value="/WEB-INF/views/resultaddemploye.jsp"/>
    </div>
    Et la page include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <s:if test="employes != null">
    <!-- --------------------------------------------------- Select Employés --------------------------------------------------- -->
        <s:select class="form-control" list="employes" name="idEmploye" listKey="idEmploye" listValue="%{nomEmploye + ' ' + prenomEmploye}" value="idEmploye" id="selectEmploye" emptyOption="true"  required="required"/>
    <!-- ------------------------------------------------------------------------------------------------------------------------- -->
    </s:if>
    <s:else>
    <select class="form-control"></select>
    </s:else>
    <span class="input-group-addon" id="basic-addon-client" data-toggle="tooltip" title="Ajouter un nouvel employe"><span class="glyphicon glyphicon-plus-sign" id="ajout-client" aria-hidden="true" data-toggle="modal" data-target="#modal-ajout"></span></span>
    Au chargement de la page et actualisation de celle-ci, voici le code que j'obtiens sur mon navigateur :
    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
    <div id="select_employe" class="hidden col-md-3 input-group">
    <!-- --------------------------------------------------- Select Employés --------------------------------------------------- -->
        <select name="idEmploye" id="selectEmploye" class="form-control" required="required">
            <option value=""></option>
            <option value="14">NEMARRE Jean</option>
            <option value="15">MACHIN Bidule</option>
            <option value="16">TRUC Muche</option>
            <option value="17">TITI Toto</option>
            <option value="18">DUPOND Pierre</option>
            <option value="19">AZERTY Uiop</option>
            <option value="20">QSDFG Hjklm</option>
            <option value="21">WXCV Bn</option>
        </select>
    <!-- ------------------------------------------------------------------------------------------------------------------------- -->
        <span class="input-group-addon" id="basic-addon-client" data-toggle="tooltip" title="Ajouter un nouvel employe"><span class="glyphicon glyphicon-plus-sign" id="ajout-client" aria-hidden="true" data-toggle="modal" data-target="#modal-ajout"></span></span>
    </div>
    Mais après avoir saisi de nouvelle info via une modal et envoi des infos via requête ajax, ma base se met à jour et mon select aussi.
    Voici le nouveau code html de mon navigateur après "mise à jour" de la div :
    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
    <div id="select_employe" class="col-md-3 input-group">
    <!-- --------------------------------------------------- Select Employés --------------------------------------------------- -->
        <tr>
            <td class="tdLabel"></td>
            <td class="tdInput">
                <select name="idEmploye" id="selectEmploye" class="form-control" required="required">
                    <option value=""></option>
                    <option value="14">NEMARRE Jean</option>
                    <option value="15">MACHIN Bidule</option>
                    <option value="16">TRUC Muche</option>
                    <option value="17">TITI Toto</option>
                    <option value="18">DUPOND Pierre</option>
                    <option value="19">AZERTY Uiop</option>
                    <option value="20">QSDFG Hjklm</option>
                    <option value="21">WXCV Bn</option>
                    <option value="22">TATA Titi</option>
                </select>
            </td>
        </tr>
    <!-- ------------------------------------------------------------------------------------------------------------------------- -->
    </div>
    Pourquoi, j'ai maintenant un tableau et ma span avant la fermeture de la dive à disparue ??

    Je pense pas que se soit utile si vous voulez, je vous donne le js de la requête ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $('#btn_save').on('click', function(){    $.ajax({
            url : 'addEmploye',
            type: 'POST',
            data : {nomEmploye : $('#nom_employe').val(), prenomEmploye : $('#prenom_employe').val()},
            dataType : 'html',
            success : function(html){
                $('#select_employe').html(html);
            },
            error : function(xhr, ajaxOptions, thrownError){
                alert('Un probléme est survenu ! ' + thrownError);
            }
        })
    })
    Soyons fou, je vous donne même l'action correspondante du fichier struts.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action name = "addEmploye" class="sii.dsi.action.TempsTravailAction" method="AddEmploye">
        <result name="success">/WEB-INF/views/resultaddemploye.jsp</result>
    </action>
    et même la méthode qui traite les données coté Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public String AddEmploye() {    Employe employe = new Employe();
        DAO<Employe> employeDao = DAOFactory.getEmployeDao();
        employe.setNomEmploye(nomEmploye);
        employe.setPrenomEmploye(prenomEmploye);
        employeDao.create(employe);
        employes = employeDao.findAll();
        return "success";
    }
    Une idée de comment ne pas avoir cette différence de code et avoir le code que j'ai au chargement de la page ??

    Merci d'avance pour 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
    Billets dans le blog
    1
    Par défaut
    Comme ta méthode ajax met à jour tout le contenu du <div> pour remplacer ton <select> (sans remettre le code d'ajout) c'est normal.
    Il suffit de mettre le <select> à l'intérieur d'un autre conteneur et de demander à ta méthode ajax de mettre à jour ce nouveau conteneur.
    Il y a d'autres façons de faire mais c'est certainement la plus simple à ce stade
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Merci beaucoup.

    C'est tout con (bon, hier j'étais fatigué ).

    Ça me pète un peut la mise en forme voulue mais je dois pouvoir arranger ça ^^.

    Merci

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

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