كيفية إعادة التوجيه إلى صفحة الفهرس في حالة حدوث وقت الجلسة في تطبيق JSF

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

  •  23-09-2019
  •  | 
  •  

سؤال

أنا أستخدم JSF RI 1.1. كيفية إعادة التوجيه إلى فهرسة الصفحة في حالة حدوث وقت الجلسة؟

هل كانت مفيدة؟

المحلول

هناك طريقتان يمكن دمجهما:

  1. الاستفادة من <meta> تحديث رأس في HTML <head> عنصر في تركيبة مع HttpSession#getMaxInactiveInterval() الذي يعيد بقايا الثواني التي لم تعيشها الجلسة بعد.

    <meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
    

    سيقوم هذا النهج تلقائيًا بإعادة توجيه الصفحة إلى المعطى url عندما تنتهي صلاحية الجلسة.

  2. قبض على 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"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top