JSF oncomplete-Attribut nach action-Attribut auswerten

videlius

Mitglied
Hallo ich habe einen Dialog der ungefähr so aussieht.

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:

Fant

Bekanntes Mitglied
SO geht es, wie du schon festgestellt hast nicht, da oncomplete Client-Side-API ist.

Ich denke du könntest für beide Fälle den selben Dialog verwenden. Innerhalb deiner BackingBean setzt du dann den Inhalt des Dialogs und aktualsierst ihn mit dem update-Attribut. Anschließend kannst du ihn dann mit oncomplete sichtbar machen.

Gruß Fant
 

JimPanse

Bekanntes Mitglied
Hi,

du kannst in deiner Bean in der Action Methode folgende Parameter senden, falls etwas schief geht:

Java:
public void delete(){
try{
....
} catch(Exception e){
RequestContext.getCurrentInstance().addCallbackParam("validationFailed", true);
}
}

und dann einfach abfragen:

Java:
<p:commandButton id="yes" style="width: 100px" value="Ja" 
							action="#{bean.delete()}" 
oncomplete="if (!args.validationFailed){success.show();} else {failure.show();}"/>


Greetz
 

videlius

Mitglied
Also ich hab das jetzt gelöst wie von JimPanse vorgeschlagen. Allerdings find ich den Vorschlag von Fant auch nicht schlecht. Na klar, ein Dialog würde ja im Prinzip reichen, muss nur der Inhalt abgeändert werden. Das ich da nicht selbst drauf gekommen bin. Danke euch beiden erstmal. :applaus:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N oncomplete bei Richfaces Web Tier 3
L Set<T> Attribut eines Objektes wird zu null in thymeleaf Web Tier 2
T PDF in JSF einbetten mit dynamischen 'src' Attribut Web Tier 4
J JSP JSTL innerhalb Tag-Attribut Web Tier 3
ruutaiokwu action-attribut des jsf h:form-tag überschreiben Web Tier 7
W JSP - Attribut-Werte aus JAVA-Klasse ? Web Tier 8
K Link in JSP setzen mit Parameter/Attribut Web Tier 4
U JSP form-Daten (ohne name-Attribut) an Servlet = Problem Web Tier 6
rambozola session attribut in servlets und jsps Web Tier 11
I HTML nach Image Web Tier 1
F Formular nach erfolgreichem Login ausblenden Web Tier 0
J Session ist nach Klick auf Zurück-Button wieder aktiv Web Tier 3
N RequestDispatcher: include-Aufruf einer jsp scheitert nach mehreren forward-Aufrufen Web Tier 1
J Suche nach einem Webframework Web Tier 5
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
S Rendern einer Komponente nach actionListener Web Tier 2
A Wartezeit nach Tomcat start wegen Servlets zu hoch Web Tier 2
F JSF - Submit nach Validation-Failed Web Tier 6
W JSF Komisches Verhalten nach Login per Realm Web Tier 4
J Nach SVN-Update alle Beans resolved to null Web Tier 3
K JSP String[] Array nach Javascript Web Tier 4
M JSF Dialog nur nach erfolgreicher Action schließen Web Tier 4
R Errorpage nach ViewExpiredException Web Tier 7
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
P JSF Ajax refresh nach Linkklick Web Tier 4
M JSF Kein Zugriff auf ManagedBeans, nach JSF Migration von 1.2 nach 2.0 Web Tier 4
T JSF URL "hängt nach" - warum? Ausblenden möglich? Web Tier 4
T JSF ViewScoped - Zustand verliert sich nach Seitenaktualisierung Web Tier 8
F Migration eines CMS von PHP nach JAVA Web Tier 3
K Bilder nach dem Upload nutzen Web Tier 10
J Memory Leak in Servlet nach längere Laufzeit Web Tier 6
C Formulardaten der Reihe nach auslesen Web Tier 5
E JSF Datatable erst nach Buttonklick anzeigen Web Tier 2
S Webapp und mysql. mysql verliert die verbindung nach langer zeit Web Tier 6
E CSS wird nach RequestDispatcher.redirect nicht mehr geladen Web Tier 7
U SessionAttribut nach j_security_check setzen Web Tier 3
F Redirect nach Aufruf einer JSP Web Tier 5
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
hdi File Upload erst nach Prüfung Web Tier 4
D JSF: Best Practice "Session invalidate nach Schließen des Browsers"? Web Tier 3
D JSF: locale verliert Wert nach Navigation Web Tier 6
ruutaiokwu Wert hinter JSP-Tag nach Java-String in Skriptlet Web Tier 4
D Die ewige Suche nach dem richtigen Web-Framework Web Tier 34
M Properties der JSP nach input-result leer (Struts 2) Web Tier 2
S Attribute in Objektliste nach gecheckten Checkboxen setzen Web Tier 4
T Liste nach Anfangsbuchstaben getrennt ausgeben? Web Tier 2
Q browserfenster schließen nach HTTP-Authentifizierung Web Tier 3
T Selectbox nach klick submit Web Tier 1
G Seitenumbruch nach x Elementen Web Tier 3
M Authentifizierung über PhaseListener je nach Seite Web Tier 11
L Argumentübergabe von JSP nach Applet Web Tier 4
F nach Update auf RichFaces 3.2.0 Fehlermeldungen Web Tier 5
I servlet: init wird auch nach ServletException aufgerufen Web Tier 3
S JSF: Ändern von CSS Styles in commandLink nach Klick Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben