Hallo ich habe einen Dialog der ungefähr so aussieht.
Der Nutzer soll nochmals gefragt werden ob er einen bestimmten Gegenstand wirklich löschen will. Klickt er auf "Ja" wird die delete-Methode der backing Bean aufgerufen. Das Löschen kann unter Umständen schiefgehen, dies wird dann in der boolean variable "deleteSuccess" dokumetiert. Das oncomplete Attribut soll dann diese Variable auswerten und entweder einen Bestätigungs- (success) oder einen Fehlerdialog (failure) aufrufen.
Mein Problem: Schon beim Laden des Dialoges wird die Variable "deleteSuccess" im oncomplete-Attribut ausgewertet. Diese kann aber unter Umständen einen falschen Wert besitzen, der korrekte Wert wird ja erst durch den Aufruf der delete-Methode gesetzt. Dies führt dazu das z.B. der Gegenstand gelöscht wurde, trotzdem aber der Fehler-Dialog eingeblendet wird, da die deleteSuccess Variable mit false initialisiert wurde und die Auswertung der if-Anweisung auf Grund der Initialisierung der Variable gemacht wurde. Zeitlich gesehen wird also erst die deleteSuccess Varaible ausgewertet und danach die delete-Methode aufgerufen.
meine Frage: Kann ich es irgendwie hinbekommen, dass die If-Anweisung im oncomplete-Attribut tatsächlich erst ausgewertet wird, nachdem die delete-Methode aufgerufen wurde?
HTML:
<p:dialog id="deleteConfirmDialog" header="Gegenstand löschen"
modal="true" draggable="false" resizable="false"
style="text-align: center" widgetVar="confirmFinalDelete">
<h:form>
...
<p:commandButton id="yes" style="width: 100px" value="Ja"
action="#{bean.delete()}"
oncomplete="if(#{bean.deleteSuccess}) {
success.show();
}else{
failure.show();
}" />
<p:commandButton id="decline" style="width: 100px" value="Nein"
onclick="confirmFinalDelete.hide()" type="button" />
</h:form>
</p:dialog>
Der Nutzer soll nochmals gefragt werden ob er einen bestimmten Gegenstand wirklich löschen will. Klickt er auf "Ja" wird die delete-Methode der backing Bean aufgerufen. Das Löschen kann unter Umständen schiefgehen, dies wird dann in der boolean variable "deleteSuccess" dokumetiert. Das oncomplete Attribut soll dann diese Variable auswerten und entweder einen Bestätigungs- (success) oder einen Fehlerdialog (failure) aufrufen.
Mein Problem: Schon beim Laden des Dialoges wird die Variable "deleteSuccess" im oncomplete-Attribut ausgewertet. Diese kann aber unter Umständen einen falschen Wert besitzen, der korrekte Wert wird ja erst durch den Aufruf der delete-Methode gesetzt. Dies führt dazu das z.B. der Gegenstand gelöscht wurde, trotzdem aber der Fehler-Dialog eingeblendet wird, da die deleteSuccess Variable mit false initialisiert wurde und die Auswertung der if-Anweisung auf Grund der Initialisierung der Variable gemacht wurde. Zeitlich gesehen wird also erst die deleteSuccess Varaible ausgewertet und danach die delete-Methode aufgerufen.
meine Frage: Kann ich es irgendwie hinbekommen, dass die If-Anweisung im oncomplete-Attribut tatsächlich erst ausgewertet wird, nachdem die delete-Methode aufgerufen wurde?
Zuletzt bearbeitet: