2009-08-04 8 views
6

में एक कालबाह्य व्यूस्टेट को संभालना मेरे पास एक श्रृंखला साइनअप पेज हैं जो एक-दूसरे पर बनाते हैं। जब उपयोगकर्ता सत्र समाप्त हो जाता है तो मेरे पास एक श्रोता होता है जो सर्वर पर सब कुछ साफ़ करता है और यह बहुत अच्छा काम करता है। लेकिन, यदि उपयोगकर्ता कुछ और करने का प्रयास करता है तो मैं उन्हें श्रृंखला के पहले पृष्ठ पर रीडायरेक्ट करना चाहता हूं। हालांकि, मेरा फ़िल्टर सही ढंग से काम नहीं कर रहा है। मैं javax.faces.application.ViewExpiredExceptionजेएसएफ और रिचफैस

इस expcetion से निपटने के लिए सर्वोत्तम तरीका क्या है बार आ रही है? मैं वास्तव में web.xml में बस संभाल नहीं सकता क्योंकि यह बहुत वैश्विक है। इसके अलावा त्रुटि पृष्ठ को कुछ जेएसएफ कोड से प्रस्तुत किया जा रहा है - ऐसा लगता है कि मुझे यह पकड़ने की ज़रूरत है कि यह एक चरणसूची का उपयोग कर रहा है, इसलिए अपवाद पहले स्थान पर नहीं होता है, लेकिन मैं एक अच्छा मॉडल नहीं ढूंढ पा रहा हूं यह कैसे करें। कोई विचार?

उत्तर

1

मुझे लगता है कि आप एक चरण श्रोता के साथ सही ट्रैक हैं। अनिवार्य रूप से पहले पृष्ठ पर सत्र में कुछ सेट अप करें। फिर चरण श्रोता में सत्र में मूल्य की तलाश करें। अगर यह बाहर नहीं निकलता है तो एक रीडायरेक्ट करें। यह चाल चरण श्रोता प्रक्रिया में जल्दी करना है। यह सुनिश्चित नहीं है कि प्रक्रिया में आपका चरण श्रोता अपवाद फेंक रहा है।

0

आप देख सकते हैं कि क्या आप सत्र रद्द करना है या नहीं

बूलियन sessionInValid = httpServletRequest.getRequestedSessionId() = अशक्त & & httpServletRequest.isRequestedSessionIdValid()!;

यहां बुलियन परिवर्तनीय सत्र InValid सत्य वापस आ जाएगा यदि सत्र किसी भी माध्यम से अमान्य है।

आप एक फिल्टर में इस जोड़ सकते हैं या एक श्रोता तो अपने web.xml फ़ाइल में इस कॉन्फ़िगर करें।

1

तरह से मैं इस संभाल web.xml केवल यूआरएल आप ट्रैक करना चाहते करने के लिए मैप किया गया करने के लिए एक फिल्टर को जोड़ने के लिए है। वह फ़िल्टर जांचता है कि सत्र समाप्त हो गया है, और उसके बाद लॉगिन पृष्ठ पर आगे है। अगर किसी जेएसएफ कोड को चलाने से पहले फिल्टर चलाया जाता है तो इसे काम करना चाहिए।

2

Richfaces, ViewExpiredException से निपटने के लिए अपने स्वयं के तंत्र है Richfaces docs को देखो।

+0

लेकिन लगता है कि ajax अनुरोध – Inv3r53

+0

के लिए ही काम करता है की तरह * सत्र * समाप्ति, समाप्ति देखने नहीं के लिए संदर्भित करता है। – EJP

1

तरह से मैं अतीत में इस संभाला है एक श्रोता जो एक कामयाब सत्र सेम के एक खेत की जाँच करता है उपयोग करने के लिए है। यदि उपयोगकर्ता श्रोताओं के सत्र सत्र में एमबीन को साफ़ करता है और उपयोगकर्ता को लॉग इन नहीं करता है। प्रत्येक अनुरोध श्रोता के माध्यम से भेजा जाता है और यदि आवश्यकताओं को पूरा नहीं किया जाता है तो उपयोगकर्ता को साइट से बाहर कर दिया जाता है। मुझे अपने लॉग में ViewExpiredException कभी नहीं मिलता है। इस अपवाद का एकमात्र समय यह हुआ है कि यदि सर्वर को पुनरारंभ किया गया है और उपयोगकर्ता पिछले सक्रिय सत्र के दौरान किसी पृष्ठ का अनुरोध करता है।