Zeigen Sie die Erfolgsmeldung an und leiten Sie dann nach einer Zeitüberschreitung mit PageFlow auf eine andere Seite um

7

Wie kann ich eine Erfolgsmeldung anzeigen und den Benutzer nach einer Zeitüberschreitung von z. 5 Sekunden?

Ich brauche das für die Login-Seite nach einer erfolgreichen Anmeldung. Ich habe Folgendes versucht, und ich kann die Warnmeldung bei fehlgeschlagenem Login sehen, aber nicht die Erfolgsmeldung bei erfolgreichem Login. Es zeigt sofort die Zielseite.

%Vor%

Ich verwende Seam's PageFlow zur Navigation.

Ich habe ein

%Vor%

auf der Anmeldeseite.

    
Holysh 04.04.2013, 11:23
quelle

3 Antworten

6

Zunächst sehen Sie mit dem Code, den Sie gepostet haben, die FacesMessage nicht vor der Weiterleitung, Sie sehen sie nach der Weiterleitung. Um dies zu erreichen, müssen Sie jedoch einen Filter hinzufügen, da Nachrichten beim Weiterleiten verloren gehen. Dies ist der Code für den Filter, den Sie benötigen (vergessen Sie nicht, ihn in web.xml zu deklarieren):

%Vor%

Wenn dies für Sie nicht funktioniert und Sie die Nachricht zuvor anzeigen müssen, müssen Sie Folgendes tun: Die Methode soll void zurückgeben, sie über AJAX aufrufen und nach dem Hinzufügen der Erfolgsnachricht aufrufen einige JavaScript-Methode, die ein paar Sekunden warten und dann die Umleitung (möglicherweise durch programmgesteuert Klicken auf eine versteckte Schaltfläche, die auf die nächste Seite umleiten). Meiner Meinung nach ist das die Mühe nicht wert, Sie werden den Anmeldevorgang nur verzögern. Wie dem auch sei, der Benutzer wird wissen, dass es erfolgreich war, weil er auf die Startseite (oder auf die Seite, an die Sie ihn senden) weitergeleitet wird.

BEARBEITEN: Die Nachrichten werden auf der Seite angezeigt, wenn die Methode beendet ist. Daher wird das Warten auf die Methode der verwalteten Bean nicht funktionieren. Nachdem Sie die FacesMessage hinzugefügt haben, verwenden Sie

%Vor%

Und in Ihrer xhtml müssen Sie eine JavaScript-Funktion ähnlich wie folgt haben:

%Vor%

wobei hiddenButtonId die ID einer p: -Schaltfläche ist, die zur Startseite umleitet und versteckt ist (Anzeige: keine)

Aber nochmal, das ist ein fieser Ansatz, meiner Meinung nach ist das nicht nötig, Sie werden den Anmeldevorgang nur verzögern.

    
Damian 04.04.2013, 11:57
quelle
14

Es ist eines der Dienstprogramme von Flash. Anstelle von

%Vor%

benutze einfach diesen Code

%Vor%     
user1643352 04.04.2013 12:32
quelle
0

Sie können MultiPageMessagesSupport nicht in der Datei web.xml deklarieren. Sie müssen MultiPageMessagesSupport in faces-config.xml deklarieren. Beispiel:

%Vor%     
Felipe 12.11.2013 20:02
quelle