panelgroup在ajax渲染后更新,但其中的表未更新

时间:2017-08-11 10:30:36

标签: ajax jsf xhtml

我在一个带有表单的panelgroup中包含一个表,我有一个按钮,它在bean中调用一个函数,并渲染所有的panelgroup,但是在单击按钮后面板组会刷新,但表保留以前的值。

这是我的表

<table id="tableau" class="table table-striped table-bordered">
  <thead style=" background-color: #3f5367; color:white;">
   <tr>
     <th>Profil</th>
     <th>Agence</th>
     <th>Directeur de projet</th>
     <th>Date Entrée</th>
     <th>Date Départ</th>
   </tr>
  </thead>
  <tbody>
   <ui:repeat value="#{ressourceMB.travailles}" var="travaille" varStatus="status">
    <tr class="grade">
     <td class="center">#{travaille.profil.code_Profil}</td>
     <td class="center">#{travaille.agence.nom_Agence}</td>
     <td class="center">#{travaille.superieur.nom_Ressource} #{travaille.superieur.prenom_Ressource}</td>
     <td class="center"><h:outputText value ="#{travaille.date_Entree_Ressource}"><f:convertDateTime pattern = "dd/MM/yyyy" timeZone="CET"></f:convertDateTime></h:outputText></td>
     <td class="center"><h:outputText value ="#{travaille.date_Depart_Ressource}"><f:convertDateTime pattern = "dd/MM/yyyy" timeZone="CET"></f:convertDateTime></h:outputText></td>
    </tr>
   </ui:repeat>
  </tbody>
</table>

这是我的commanbutton

<h:commandButton class="btn btn-success" style="font-size: 12px" value="Ajouter">
  <f:ajax listener="#{travailleMB.ajouterTravaille}" render="panelcode"/>
</h:commandButton>

实际上点击此按钮后,我会添加到表格&#34; travailles&#34;新行并清除表单值。 表单值已清除,但表保持相同的值。

这是整个小组的代码

<h:panelGroup id="panelcode">
           <div class="col-md-6 col-sm-6 col-xs-12">
                      <h:panelGroup id="panelcode2">

                        <div class="form-group">
                        <label class="control-label col-md-3 col-sm-3 col-xs-12">Profil *
                        </label>
                        <div class="col-md-6 col-sm-6 col-xs-12" style="padding-top: 5px;" >
                          <h:selectOneMenu value="#{travailleMB.selectedProfil}" title="Selectionner un profil" style="width:316px;height:34px; color:#555">
                            <f:selectItem itemLabel="--- Choisir un Profil ---" />
                            <f:ajax listener="#{travailleMB.saveSelect}" process="@this"/>
                            <f:selectItems value="#{ressourceMB.profils}" var="profil" itemLabel="#{profil.nom_Profil}" itemValue="#{profil.nom_Profil}"/> 
                          </h:selectOneMenu>
                          <br/>
                          <h:outputText value="#{travailleMB.requiredmsg}" style="color:red"/>
                        </div>
                        <div class="col-md-6 col-sm-6 col-xs-12">
                        </div>
                      </div>

                      <div class="form-group">
                        <label class="control-label col-md-3 col-sm-3 col-xs-12">Agence *
                        </label>
                        <div class="col-md-6 col-sm-4 col-xs-12" style="padding-top: 5px;" >
                          <h:selectOneMenu value="#{travailleMB.selectedAgence}" title="Selectionner une Agence" style="width:316px;height:34px; color:#555">
                            <f:selectItem itemLabel="--- Choisir une Agence ---" />
                            <f:selectItems value="#{ressourceMB.agences}" var="agence" itemLabel="#{agence.nom_Agence}" itemValue="#{agence.nom_Agence}"/>
                            <f:ajax render = "dps" listener="#{travailleMB.onAgenceSelect}" process="@this"/>
                          </h:selectOneMenu>
                          <br/>
                          <h:outputText value="#{travailleMB.requiredmsg2}" style="color:red"/>
                        </div>
                        <div class="col-md-6 col-sm-6 col-xs-12">
                        </div>
                      </div>

                      <div class="form-group">
                        <label class="control-label col-md-3 col-sm-3 col-xs-12">Directeur de Projet 
                        </label>
                        <div class="col-md-3 col-sm-4 col-xs-12">
                          <h:selectOneMenu id="dps" value="#{travailleMB.selectedDp}" title="Selectionner un Directeur de projets" style="width:316px;height:34px; color:#555">
                            <f:selectItem itemLabel="--- Choisir un Directeur de projet ---" />
                            <f:selectItems value="#{travailleMB.ressourcesDp}" var="ressource" itemLabel="#{ressource.nom_Ressource} #{ressource.prenom_Ressource}" itemValue="#{ressource.id_Ressource}"/>                             
                             <f:ajax listener="#{travailleMB.saveSelect}" process="@this"/>
                          </h:selectOneMenu>
                        </div>
                        <div class="col-md-3 col-sm-6 col-xs-12">
                        </div>
                      </div>
                      <div class="form-group">
                        <label class="control-label col-md-3 col-sm-3 col-xs-12" for="date-entree">Date Entrée <span class="required">*</span>
                        </label>
                        <div class="row calendar-exibit col-md-6 col-sm-6 col-xs-12">
                        <fieldset style="margin-bottom: -10px">
                          <div class="control-group">
                            <div class="controls">
                              <div class="col-md-11 xdisplay_inputx form-group has-feedback" style="width: 85.667%; padding-left: 0px; border-radius: 3px;">
                                <p:calendar class="col-md-6 col-sm-6 col-xs-12" locale="fr" id="dentree" value="#{travailleMB.dateentree}" placeholder="--- Date Entrée ---" style="border-radius: 3px; font-size: 12px; padding-right: 9px; padding-top: 3px;"/>
                                <f:ajax event="click" listener="#{travailleMB.saveSelect}" process="@this"/>
                                <p:outputLabel value="#{travailleMB.requiredmsg1}" style="color:red; font-size:12px; font-weight: 400; line-height: 1.471; margin-left: 6%"></p:outputLabel>
                              </div>
                            </div>
                          </div>
                        </fieldset>
                      </div>
                      </div>
                      <div class="form-group">
                        <label class="control-label col-md-3 col-sm-3 col-xs-12" for="date-depart">Date Départ 
                        </label>
                        <div class="row calendar-exibit col-md-3 col-sm-6 col-xs-12">
                        <fieldset style="margin-bottom: -10px">
                          <div class="control-group">
                            <div class="controls">
                              <div class="col-md-11 xdisplay_inputx form-group has-feedback" style="width: 85.667%; padding-left: 0px; border-radius: 3px;">
                                <p:calendar class="col-md-6 col-sm-6 col-xs-12" locale="fr" id="ddepart" value="#{travailleMB.datedepart}" placeholder="--- Date Depart ---" style="border-radius: 3px; font-size: 12px; padding-right: 9px; padding-top: 3px;" />
                                <f:ajax event="click" listener="#{travailleMB.saveSelect}" process="@this"/>
                              </div>
                            </div>
                          </div>
                        </fieldset>
                        </div>
                      </div>
                  </h:panelGroup>
                      <div class="ln_solid"></div>

                      <div class="form-group">
                        <div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">

                          <h:commandButton class="btn btn-primary" id="reset1" style="font-size: 12px" value="Reinitialiser">
                            <f:ajax render="panelcode2" listener="#{travailleMB.clear}"></f:ajax>
                          </h:commandButton>

                          <h:commandButton class="btn btn-success" style="font-size: 12px" value="Ajouter">
                             <f:ajax listener="#{travailleMB.ajouterTravaille}" render="panelcode"/>
                          </h:commandButton>

                        </div>
                    </div>
            </div>
            <div class="col-md-6 col-sm-6 col-xs-12" style="font-size: 11.19px">
                    <table id="tableau" class="table table-striped table-bordered">
                      <thead style=" background-color: #3f5367; color:white;">
                        <tr>
                          <th>Profil</th>
                          <th>Agence</th>
                          <th>Directeur de projet</th>
                          <th>Date Entrée</th>
                          <th>Date Départ</th>
                          <th style="color: #3f5367"><div style="color: white;padding-bottom:0px;text-align:center;">Modifier</div></th>
                        </tr>
                      </thead>
                      <tbody>
                        <ui:repeat value="#{ressourceMB.travailles}" var="travaille" varStatus="status">
                        <tr class="grade">
                            <td class="center">#{travaille.profil.code_Profil}</td>
                            <td class="center">#{travaille.agence.nom_Agence}</td>
                            <td class="center">#{travaille.superieur.nom_Ressource} #{travaille.superieur.prenom_Ressource}</td>
                            <td class="center"><h:outputText value ="#{travaille.date_Entree_Ressource}"><f:convertDateTime pattern = "dd/MM/yyyy" timeZone="CET"></f:convertDateTime></h:outputText></td>
                            <td class="center"><h:outputText value ="#{travaille.date_Depart_Ressource}"><f:convertDateTime pattern = "dd/MM/yyyy" timeZone="CET"></f:convertDateTime></h:outputText></td>
                            <td><h:form>
                            <h:commandLink
                              action="#" class="btn btn-warning" style="margin-left: 21%; padding:0px 0px ; background-color: #5bc0de; border-color: #46b8da">
                              <span><i class="fa fa-edit" style="color: white; padding: 1px 6px"></i></span>
                            </h:commandLink>
                            </h:form></td>
                        </tr>
                        </ui:repeat>
                      </tbody>
                    </table>
                </div>
              </h:panelGroup>

这是将行添加到表&#34; travaille&#34;在数据库和列表&#34; travailles&#34;填充我的xhtml页面中的表格。

//TODO Methode Ajouter Travaille
    public void ajouterTravaille() throws ParseException{
        System.out.println("Accès a la methode d'ajout Travaille");
        requiredmsg = "";
        requiredmsg1 = null;
        requiredmsg2 = null;

        System.out.println("le selected profil est : "+selectedProfil);
        System.out.println("la selected agence est : "+selectedAgence);
        if(selectedDp!= null){
            System.out.println("le directeur de projets est : "+ressourceRepository.Chercherparid(selectedDp).getNom_Ressource());
        }
        else{
            System.out.println("le directeur de projets est : "+selectedDp);
        }
        System.out.println("la date entrée est : "+dateentree);
        System.out.println("la date départ est : "+datedepart);


        if(selectedProfil == null){
            requiredmsg="Veuillez renseigner ce champ";
            selectedProfil=null;
        }
        if(dateentree == null){
            requiredmsg1="Veuillez renseigner ce champ";
            dateentree = null;
        }
        if(selectedAgence == null){
            requiredmsg2="Veuillez renseigner ce champ";
            selectedAgence=null;
        }
        if(selectedProfil == null || dateentree == null || selectedAgence == null){
            // SI un seul champ requis est vide
            System.out.println("Champs requis est vide travaille");
        }
        else{// SI aucun champs requis n'est vide il faut verfier les conditions de dates

            // charger les travailles de la ressource dans une liste
            List<Travaille> trvs=travailleRepository.Chercherparressource(ressourceRepository.Chercherparid(RessourceMB.id));
            // enregistrer le dernier enregistrement de la liste
            Travaille trv = trvs.get(trvs.size()-1);

            // verifier si la ressource a une date de depart
            if(trv.getDate_Depart_Ressource()==null){
                System.out.println("Pas de date depart pour la ressource travaille");
            }
            else if(trv.getDate_Depart_Ressource().compareTo(dateentree)==0 || trv.getDate_Depart_Ressource().compareTo(dateentree)<0){
                // l'ajout il faut mettre à jour les données de l'enregistrement de la ressource
                ProfilRessource pr = profilRessourceRepository.Chercherparnom(selectedProfil);
                Agence ag = agenceRepository.Chercherparnom(selectedAgence);
                Ressource dp = ressourceRepository.Chercherparid(selectedDp);

                Ressource rc=ressourceRepository.Chercherparid(RessourceMB.id);

                travailleRepository.save(new Travaille(ressourceRepository.Chercherparid(RessourceMB.id), dp, pr, ag, dateentree, datedepart));

                System.out.println("id ressource a modifier est : " +rc.getNom_Ressource());

                ressourceRepository.Updateprofilressource(pr, rc.getId_Ressource());
                ressourceRepository.Updateentreeressource(dateentree, rc.getId_Ressource());
                ressourceRepository.Updatedepartressource(datedepart, rc.getId_Ressource());
                ressourceRepository.Updateagenceressource(ag, rc.getId_Ressource());
                ressourceRepository.Updatedpressource(dp, rc.getId_Ressource());    

                travailles=travailleRepository.Chercherparressource(ressourceRepository.Chercherparid(RessourceMB.id));
                System.out.println("table travailles populated");

                selectedProfil=null; selectedAgence=null; selectedDp=null; dateentree=null; datedepart=null; 

            }

        }
        System.out.println("date entrée avant la date de depart");
        }

这张照片可以显示当我点击按钮[AJOUTER]时发生了什么,你可以看到表格被清除但桌子上没有变化。 image of the page on browser

0 个答案:

没有答案