JSF Dialog nur nach erfolgreicher Action schließen

miketech

Bekanntes Mitglied
Hallo zusammen,

ich habe bei mir in einer Anwendung einen Dialog, den ich anzeige. Innerhalb des Dialogs ist ein Button, der eine Methode aufruft, ist quasi der Submit-Button für den Dialog. Nun möchte ich, dass abhängig davon, was die Methode als Ergebnis liefert, der Dialog wieder geschlossen wird.

Ich kann ja nun mit einem:

Java:
action="#{myBean.myMethod}"

die Methode aufrufen, wenn der Button geklickt wird. Und ich kann mit einem:

Java:
onClick="dialog.hide()"

den Dialog schließen lassen. Nur wie bekomme ich nun die zwei Dinge zusammen, dass abhängig davon, was myMethod liefert, der Dialog geschlossen wird? Typisches Beispiel:

Ein Dialog, in dem man eine neue Datei erzeugt, man hat einen Button "Speichern". Wenn die Datei schon existiert, darf der Dialog nicht geschlossen werden, sondern es wird eine Fehlermeldung angezeigt. Wenn die Datei noch nicht existiert, dann wird die Datei erstellt, gespeichert und der Dialog geschlossen. So etwas versuche ich umzusetzen.

Hat jemand eine Idee, wie ich hier vorgehe?

Viele Grüße

Mike
 

JimPanse

Bekanntes Mitglied
in der action method deiner Bean eine FacesMessage Fehlermeldung erstellen und im handler

für Richfaces:
Java:
<a4j:commandButton
oncomplete="if( !(#{not empty facesContext.messageList}) )dialog.hide();"/>

für Primefaces
Java:
<p:commandButton
oncomplete="handleComplete(xhr, status, args)" />

<script type="text/javascript">  
				function handleComplete(xhr, status, args) {  
				    if(!args.validationFailed) {  
				       dialog.hide();
				    } 
				}  
			</script>
oder



verwenden.

PS: Nächste macht bitte auch die Lib die verwendest angeben. (Du verwendest wahrscheinlich primefaces?)
 

miketech

Bekanntes Mitglied
Hallo Jim,

ja, es ist Primefaces, gut geschätzt :)

Danke für die Tipps, wusste nicht, dass es solche schönen Javascript-Möglichkeiten mit Primefaces gibt (die Argumente args etc.). Dann versuche ich das mal.

Über die Messages wird schwer, weil auch im erfolgreichen Fall eine Message ausgegeben wird, daher ist die Variante mit der Validation ganz elegant.

Viele Grüße

Mike
 

JimPanse

Bekanntes Mitglied
Hi,

eine andere Möglichkeit wäre in der action Methode deiner Bean:

Java:
public void delete(){
try{
....
}catch(Exception e){

	RequestContext.getCurrentInstance().addCallbackParam("validationFailed", true);
}
}

und dann im button.

Java:
<a4j:commandButton
oncomplete="if (!args.validationFailed){ dialog.hide();}"/>

Greetz
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
FINF_AW_Alex JSF PrimeFaces Dialog verlinken Web Tier 3
C selectOneMenu mit valueChangeListener im <p:dialog Web Tier 2
W Servlet SPEICHERN UNTER-Dialog für mehrere Dateien Web Tier 4
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
F Primefaces Dialog Web Tier 7
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
V JSF oncomplete-Attribut nach action-Attribut auswerten Web Tier 3
K JSP String[] Array nach Javascript 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