我在一个带有表单的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