2010-01-22 15 views
9

JSF में viewExpiredException संभाल करने के लिए, मैं web.xml मेंviewExpiredException JSF

<error-page> 
    <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
    <location>/error.html</location> 
</error-page> 

<session-config> 
    <session-timeout>1</session-timeout> 
</session-config> 

कोडित।

error.html में मैंने मूल लॉगिन पृष्ठ पर रीडायरेक्ट किया है। लेकिन समस्या यह है कि सत्र स्कॉप्ड बीन भी सत्र समाप्त होने तक मंजूरी नहीं दी गई थी। क्या इसका हल करने का कोई तरीका है?

उत्तर

7

लॉगिन पृष्ठ से ब्राउज़र कैश से अनुरोध किया जा सकता है। Filter बनाकर इसे अक्षम करें जो FacesServlet से जुड़ा हुआ है और मूल रूप से doFilter() विधि में निम्न पंक्तियां हैं, ताकि आपको उन सभी पृष्ठों पर दोहराने की आवश्यकता न हो जिन्हें आप कैश होने से रोकना चाहते हैं।

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); // Proxies. 
+0

यदि मैं फेसलेट का उपयोग करता हूं और एक निश्चित लेआउट है, तो क्या हेडर में या फ़िल्टर में कोई अंतर है? – RinaldoPJr

+0

@Rin: नहीं, बिल्कुल कोई फर्क नहीं पड़ता है। आपको केवल यह ध्यान रखना होगा कि HTTP प्रतिक्रिया शीर्षकों के पास मेटा में सेट किए गए लोगों पर हमेशा प्राथमिकता होती है। इसलिए यदि सर्वर ने HTTP प्रतिक्रिया शीर्षलेख में कुछ डिफ़ॉल्ट सेट किए हैं, तो वे मेटा में सेट किए गए लोगों को ओवरराइड करेंगे। यह भी देखें http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers/2068407#2068407 और http://stackoverflow.com/questions/ 10305718/सेव-बैक-बटन-ऑन-जेएसएफप्रिमेफेस-एप्लिकेशन/1030579 9 # 10305799 – BalusC

+0

क्षमा करें, आपको धन्यवाद देना भूल गया। :) यह बहुत प्रबुद्ध था; – RinaldoPJr