JSF Mit Ajax ganze Seite neu laden

remopeter

Neues Mitglied
Hallo

Ich versuche folgendes. Ich verwende Richfaces. Ich befinde mich auf der Suchseite, suche und erhalte mehrere Treffer, welche ich in einer Trefferliste anzeige. Nun kann ich einzelne Elemente auf der Trefferliste löschen. Dabei öffnet sich ein Popup (rich😛opupPanel) in welchem ich das Löschen bestätigen kann. Ich lade dabei nur die Trefferliste neu. Nun kann ich auch einen Treffer auswählen und komme dann auf die Bearbeiten-Seite, auf welcher ich ebenfalls löschen kann. Auch hier öffnet sich zum Bestätigen des Löschens ein rich😛opupPanel. Nach dem Bestätigen möchte ich aber nicht die Bearbeiten-Seite anzeigen, sondern die Such-Seite mit der Meldung, dass die Daten gelöscht wurden. Die Suchseite wird aber nicht geladen, obwohl die delete-Methode des Beans die Suchseite zurückgibt. Mache ich das Ganze ohne den Umweg über das Popup, wird die Suchseite angezeigt. Hier der Aufruf der Löschenfunktion auf der Bearbeitenseite ohne Richfaces:
HTML:
<h:commandButton value="Löschen" action="#{benutzerPM.delete()}" styleClass="button"/>
Und hier mit Richfaces:
HTML:
<a4j:commandButton value="Löschen" oncomplete="#{rich:component('confirmDelete')}.show()" render="form" execute="@this" styleClass="button"/> -->
<a4j:jsFunction name="deleteBenutzer" action="#{benutzerPM.delete()}" execute="@this" render="form" oncomplete="#{rich:component('confirmDelete')}.hide();"/>
<rich:popupPanel id="confirmDelete" autosized="true" left="250" top="250">
	Willst du den Benutzer wirklich löschen?
	<a4j:commandButton value="Abbrechen" onclick="#{rich:component('confirmDelete')}.hide(); return false;" />
	<a4j:commandButton value="Bestätigen" onclick="deleteBenutzer(); #{rich:component('confirmDelete')}.hide();"/> 
</rich:popupPanel>
Wie kann ich es bewerkstelligen, dass auch mit Richfaces nach dem Bestätigen die Suchseite geladen wird?

Danke schon mal für die Tips
Gruss, Remo
 
Wieso nutzt Du extra eine <a4j:jsFunction .../>?

Wie sieht denn Deine delete()-Methode der Bean aus? Diese könntest Du in Deinem Button auch direkt aufrufen und dort einen Redirect machen.
 
Ich hab das aus einem Beispiel für was anderes übernommen, darum die <a4j:jsFunction .../>.
Danke für deine Lösung. Die ist ja so einfach und logisch, dass es mir fast peinlich ist. Ich habe einfach zu weit gesucht. So geht es nun:

HTML:
<a4j:commandButton value="Löschen" oncomplete="#{rich:component('confirmDelete')}.show()" render="confirmDelete" execute="@this" styleClass="button"/>

<rich:popupPanel id="confirmDelete" autosized="true" left="250" top="250">
        Willst du den Benutzer wirklich löschen?
        <a4j:commandButton value="Abbrechen" onclick="#{rich:component('confirmDelete')}.hide(); return false;" />
        <h:commandButton value="Bestätigen" onclick="#{rich:component('confirmDelete')}.hide();" action="#{benutzerPM.delete()}"/> 
</rich:popupPanel>
 

Zurück
Oben