2017-09-23 4 views
0

Je souhaite mettre à jour la donnée après confirmation par l'utilisateur de l'action de la boîte de dialogue de confirmation, mais cela ne fonctionne pas.Fenêtre de confirmation des primitives ne mettant pas à jour les données

<p:panel id="formPanel" header="Welcome #{sessionBean.name}"> 
    <h:form id="dtForm"> 
     <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" globalOnly="true" /> 
     <p:dataTable id="classList" var="class" value="#{listClassBean.classList}" widgetVar="classListDT" 
        paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
        paginator="true" rows="10" rowsPerPageTemplate="5,10,15" paginatorPosition="bottom" 
        rowKey="#{class.classroomId}" style="margin: 20px 20px 20px 20px;"> 

      <!--columns omitted--> 

      <p:column headerText="Exit" rendered="#{sessionBean.loggedAccount.accType == 'S'}" 
         style="width: 50px; text-align: center;"> 
       <p:commandButton icon="fa fa-sign-out" action="#{listClassBean.exitClass(class.classroomId)}" 
           styleClass="redbutton" process="dtForm:classList" update="dtForm:classList"> 
        <p:confirm header="Exit Class" 
           message="Are you sure you want to exit the class #{classroomSettingBean.classroom.classroomId}?" 
           icon="ui-icon-alert"/> 
       </p:commandButton> 
      </p:column> 
     </p:dataTable> 
    </h:form> 
</p:panel> 

<h:form> 
    <p:confirmDialog global="true" showEffect="clip" hideEffect="clip"> 
     <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check"/> 
     <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" /> 
    </p:confirmDialog> 
</h:form> 

Tout fonctionne bien, mais il ne met pas à jour le datatable. Une idée?

+0

Exécuter votre application en mode développement JSF. Vérifiez si vous avez des erreurs alors. Essayez aussi d'ajouter un 'p: messages' et faites-le autoupdate et voyez ce qu'il vous dit. – Kukeltje

+0

comment courir en mode de développement jsf? et il n'y a pas de message à afficher ... – Newbie

+0

C'est dans les (bons) tutoriels jsf, google abd plus. Commencez par lire http://www.stackoverflow.com/tags/jsf/info – Kukeltje

Répondre

0

Vous avez juste inverse entre la forme et le panneau comme celui-ci:

<h:form id="dtForm"> 
     <p:panel id="formPanel" header="Welcome #{sessionBean.name}"> 

.... 

     </p:panel> 
</h:form> 
0

J'ai eu un problème connexe et ce comment je l'ai résolu, seulement que je l'ai utilisé p: dialogue à la place. La zone de texte met à jour un enregistrement "MyMessage" dans le dataTable "codeTable".

<p:dialog header="Customize Message" id="editDlg" widgetVar="displayDlg" modal="true" resizable="false" width="450"> 
 
    <p:inputTextarea id="resin" value="#{MyBean.myMessage}" style="width: 400px; height: 150px; padding: 10px; resize: none" maximum="550" /> 
 
    <p:commandButton value="Cancel" onclick="PF('displayDlg').hide()" style="width: 75px; left: 220px" /><br/> 
 
    <p:commandButton value="Update" action="#{myBean.updateMyMessage()}" update="form:my_growl" onclick="PF('displayDlg').hide()" style="width: 75px; left: 220px" oncomplete="refreshTable();" /> 
 
</p:dialog> 
 
<p:remoteCommand name="refreshTable" action="#{paybill.userPayBillDetails()}" partialSubmit="true" process="@this, editDlg" update="codeTable" />