JSF - RichFaces - So wissen Sie, ob die Sitzung zeitlich festgelegt ist (auf den Kunden)

StackOverflow https://stackoverflow.com/questions/1248929

  •  12-09-2019
  •  | 
  •  

Frage

Ich entwickle die Anwendung mit JSF-RichFaces.

Die Anwendung verfügt über eine Standard -Anmeldeseite, Sitzungsverwaltung und die Sitzungszeit von 15 Minuten.

Eine der Anforderungen ist, wenn die Sitzung abläuft und der Benutzer auf eine der Links klickt, muss ich ein Popup anzeigen (anstatt sich auf eine Anmeldeseite anzeigen), in der "Ihre Sitzung abgelaufen ist, bitte melden Sie sich erneut an."

Wenn es sich um einen einzelnen Link handelt, kann ich mit A4J überprüfen, ob die Sitzung abgelaufen ist oder nicht. Aber in meinem Fall muss ich die "Sitzungs -Out" -Amarm für jeden Link und jede Taste anzeigen.

Alle Hinweise darauf werden mir helfen, vorwärts zu gehen.

Danke im Voraus.

War es hilfreich?

Lösung

Wenn das Timeout der Sitzung 15 Minuten beträgt, können Sie einfach einen JavaScript -Anruf festlegen (mithilfe von Verwendung setTimeout Methode) mit einem Popup. Wenn der Benutzer auf einen Link klickt, wird der JavaScript -Aufruf zurückgesetzt, sodass das Popup nur angezeigt wird, wenn der Benutzer mindestens 15 Minuten lang eine Seite bleibt.

Sie können mit so etwas versuchen:

<a4j:outputPanel ajaxRendered="true">
    <script type="text/javascript">
        setTimeout("Richfaces.showModalPanel('xxx');", 900000);
    </script>
</a4j:outputPanel>

Erklärungen:

Wir wickeln den JavaScript -Code in a <a4j:outputPanel> Komponente mit a ajaxRendered Attribut festgelegt auf true. Auf diese Weise wird das JavaScript -Timeout auch dann zurückgesetzt, wenn der Benutzer auf einen AJAX -Link klickt. Dann stellten wir eine Zeitüberschreitung auf 15 Minuten (900000 Millisekunden) ein, bis ein Modalpanel angezeigt wird.

Ich schlage vor, dass Sie diesen Code (und das Modalpanel) bei Verwendung in eine Vorlage einfügen Facelets. Diese Vorlage wird dann für jede Seite Ihrer Anwendung verwendet ...

Andere Tipps

RichFaces bietet eine zusätzliche Möglichkeit, Timeouts (ViewexpiredException) auf der Client -Seite zu fangen.

Fügen Sie zunächst den folgenden Code in Ihr web.xml hinzu:

    <context-param>
    <param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name>
    <param-value>true</param-value>
</context-param>

Fügen Sie schließlich ein JavaScript auf der Seite hinzu:

<script type="text/javascript">
//<![CDATA[
A4J.AJAX.onError = function(req, status, message) {
    *window.location.reload();*
}
//]]>
</script>

RichFaces können den Ablauf der Sitzung (und andere Fehler) übernehmen, indem Sie Ihre eigene JS -Funktion definieren, die zum Zeitpunkt der Situation ausgeführt wird.

Richfaces Guide

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top