2016-03-25 4 views
0

Ich verwende unter Code, um die Zeile in p:datatable zu löschen. Wenn ich Onclick-Methode innerhalb p:commandbutton Tag verwende, aktualisieren Sie die ganze Seite, sonst funktioniert es gut. Bitte gib mir eine Lösung.unerwartete Ganzseitenaktualisierung mit p: commandButton

<p:commandButton title="Delete Affiliation" immediate="true" process="@this" 
    update="affiliationList" alt="Delete Affiliation" icon="ui-icon-trash" 
    action="#{readAuthorDetailsbean.deleteSelectedAffiliation}" style="width:30px" 
    onclick="return confirm('Are you sure, Do you want to delete this record?');"> 
    <f:setPropertyActionListener value="#{affiliation}" 
     target="#{readAuthorDetailsbean.selectedAffilliationListAL}" /> 
</p:commandButton> 
+0

Wie ist dieses Javascript oder jquery verwandt? Wie wollen Sie, dass wir versuchen zu reproduzieren? Bitte zeigen Sie [mcve]. Wahrscheinlich geben Sie etwas von der Aktion zurück – Kukeltje

+0

Zeigen Sie den vollständigen Code an. Ich füge onclick hinzu (Java Script-Funktion). Es gibt True zurück, wenn ich in der Löschbestätigung auf Ja klicke. Es aktualisiert die ganze Seite. – Jai

+0

Standardmäßig fügt PrimeFaces 'return false;' (wegen ajax) zu generiertem HTML-Code aus 'p: commandButton' hinzu, so dass die Formularübergabe nicht ausgelöst wird. Wenn Sie 'confirm()' zu 'onclick' hinzufügen, dann wird nach dem Klicken auf 'OK' der zurückgegebene Wert 'true' und die Formularübergabe erfolgt (normales Post-Submit, nicht Ajax - also Seitenaktualisierung). Sie könnten ['p: confirmDialog'] (http://www.primefaces.org/showcase/ui/overlay/confirmDialog.xhtml) versuchen. – Geinmachi

Antwort

3

Wenn Sie Ihr onclick Attribut
if (!confirm('Are you sure, Do you want to delete this record?')) return false;
umformulieren dann sollte es wie erwartet funktionieren. Was sie tut, ist:

  • , wenn der Benutzer bestätigt es keinen Wert zurückgibt und PrimeFaces kann Prozess AJAX-Request
  • wenn Benutzer bricht Bestätigung dann zurückgegebene Wert false und die weitere Verarbeitung wird abgebrochen weiter.

Wenn Sie nur return confirm('Are you sure?') tun und Benutzer ist sicher, der zurück true Wert PrimeFaces hinzugefügt return false am Ende des onclick Attributs annulliert (es macht die für Ajax) und anstelle von Ajax-Request Sie normale Post Vorlage (siehe Seite neu laden).
return false cancels default behavior of html elements.

+0

Dies ist in der kommenden 6.0-Version behoben (und wahrscheinlich auch eine Version 5.3.x). Siehe https://github.com/primefaces/primefaces/issues/1349 – Kukeltje

Verwandte Themen