Bonjour,
J'ai un Datatable qui est bindé à une liste de DTO, dans ce datatable j'ai une colonne action qui contient un bouton pour supprimer la ligne sélectionnée, et là j'ai un problème par rapport au rafraîchissement du tableau après que la suppression s'effectue avec succès !
Code XHTML du datatable :
Code de la méthode de suppression dans l'EmployeeBean
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <!-- EMPLOYEE DATA DETAILS --> <p:panel id="panelDetails" header="#{msg.Details} "> <p:dataTable var="employeeFingerprintAndCard" value="#{employeeBean.employeeFingerprintsAndCards}" widgetVar="details_Table" rows="10" paginator="true" rendered="true" emptyMessage="#{msg.MsgNoRecords}" id="details_Table" paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" paginatorPosition="bottom" rowsPerPageTemplate="5,10,20" class="fixed_table"> <p:column headerText="#{msg.Brand}" sortBy="#{employeeFingerprintAndCard.brand}" filterBy="#{employeeFingerprintAndCard.brand}" filterStyle="display:none" filterMatchMode="contains" priority="2"> <h:outputText value="#{employeeFingerprintAndCard.brand}" /> </p:column> <p:column headerText="#{msg.Card}" sortBy="#{employeeFingerprintAndCard.cardNumber}" filterBy="#{employeeFingerprintAndCard.cardNumber}" filterStyle="display:none" filterMatchMode="contains" priority="3"> <h:outputText value="#{employeeFingerprintAndCard.cardNumber}" /> </p:column> <p:column headerText="#{msg.NumberOfFingerprints}" sortBy="#{employeeFingerprintAndCard.fingerprintsCounter}" filterBy="#{employeeFingerprintAndCard.fingerprintsCounter}" filterStyle="display:none" filterMatchMode="contains" priority="4"> <h:outputText value="#{employeeFingerprintAndCard.fingerprintsCounter}" /> </p:column> <p:column headerText="#{msg.Actions}" exportable="false"> <p:outputPanel> <p:commandButton icon="ui-icon-trash" action="#{employeeBean.deleteFingerprintAndCard}" ajax="true" update="form:details_Table" title="#{msg.Delete}" rendered="#{employeeFingerprintAndCard.fingerprintsCounter ge 1}"> <f:setPropertyActionListener value="#{employeeFingerprintAndCard}" target="#{employeeBean.employeeFingerprintAndCardDto}" /> <f:setPropertyActionListener value="#{employeeFingerprintAndCard.fingerprint}" target="#{employeeBean.fingerprint}" /> <p:confirm header="#{msg.Confirmation}" message="#{msg.AreYouSure}" icon="ui-icon-alert" /> </p:commandButton> </p:outputPanel> </p:column> </p:dataTable> </p:panel> <!-- EMPLOYEE DATA DETAILS --> <p:ajaxStatus onstart="PF('statusDialog').show()" onsuccess="PF('statusDialog').hide()" /> <p:confirmDialog global="true" showEffect="fade" hideEffect="fade"> <p:commandButton value="#{msg.Oui}" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" /> <p:commandButton value="#{msg.Non}" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" /> </p:confirmDialog>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void deleteFingerprintAndCard() { if (employee.getCard() != null && !employee.getCard().isEmpty()) { IDeviceFacotry factory = deviceFactory.getDeviceFactory(fingerprint.getDevice()); factory.deleteCard(employee); employeeService.saveOrUpdateService(employee); } Fingerprint fingerprintToRemove = fingerPrintService.findByIDService(Fingerprint.class, fingerprint.getId()); fingerPrintService.deleteService(fingerprintToRemove); }
Partager