كيفية إعادة التوجيه إلى صفحة الفهرس في حالة حدوث وقت الجلسة في تطبيق JSF
-
23-09-2019 - |
سؤال
أنا أستخدم JSF RI 1.1. كيفية إعادة التوجيه إلى فهرسة الصفحة في حالة حدوث وقت الجلسة؟
المحلول
هناك طريقتان يمكن دمجهما:
الاستفادة من
<meta>
تحديث رأس في HTML<head>
عنصر في تركيبة معHttpSession#getMaxInactiveInterval()
الذي يعيد بقايا الثواني التي لم تعيشها الجلسة بعد.<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
سيقوم هذا النهج تلقائيًا بإعادة توجيه الصفحة إلى المعطى
url
عندما تنتهي صلاحية الجلسة.قبض على
ViewExpiredException
فيweb.xml
:<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.jsf</location> </error-page>
سيقوم هذا النهج تلقائيًا بإعادة توجيه الطلب إلى المعطى
<location>
عندماPOST
تم إطلاق الطلب (h:commandButton
,h:commandLink
, ، وما إلى ذلك) بينما تنتهي الجلسة.
لاحظ أنني شخصياً أفضّل "صفحة تحذير أو تنبيه من انتهاء جلسة الوسيطة أو تنبيه لتجنب" WTF؟ " تجارب وبالتالي تحسين تجربة المستخدم. أكثر من ذلك ، أنا أفضل إطلاق استطلاع Ajaxical كل دقيقة عندما يظهر العميل نشاطًا من خلال الاستماع إليه click
و keypress
, ، بحيث يمكن تأجيل عمر الجلسة أكثر.
نصائح أخرى
يمكنك استخدام أ Filter
لالتقاط الاستثناء الخاص الذي يشير إلى المهلة ، وإعادة التوجيه من هناك.
JSF2:
<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>