डिफ़ॉल्ट व्यवहार, FlowHandlerAdapter.defaultHandleException() में, "समाप्त या समाप्त होने वाले प्रवाह का नया निष्पादन शुरू करने का प्रयास करता है"।
यह एक WebFlow तरह से संभाल करने के लिए यह एक handleException() विधि है कि एक instanceof NoSuchFlowExecutionException
लिए जाँच करता है के साथ एक FlowHandler
प्रदान करने के लिए है, तो ऐसा कुछ होगा की तरह का एक रीडायरेक्ट URL का निर्माण या सत्र गुंजाइश पर कुछ ऐसा है जो बाद में एक बार हटाया जा सकता है का उपयोग जगह की तरह दिखता है ।
वेबफ्लो रीडायरेक्ट का उपयोग करने के तरीके के कारण, मुझे नहीं लगता कि कोई अन्य स्कोप ऐसे प्रवाह या संदेश को बाद में उपयोग करने की अनुमति देगा जब नए प्रवाह के दृश्य प्रस्तुत किए जाएंगे।
हालांकि, Interceptor
में एक नया सत्र का पता लगाने या यहां तक कि Filter
भी उतना ही प्रभावी प्रतीत होता है। रेफरेंस फोरम थ्रेड में दस्तावेज के रूप में, मैंने अपनी पिछली जांच में क्या किया है। मैं बस कुछ सुंदर की उम्मीद कर रहा था।
इसके अलावा, जब तक नया प्रवाह शुरू होता है, तब तक एक नया सत्र आईडी पहले से ही बनाई जा चुकी है, इसलिए इस स्थिति को प्रवाह.एक्सएमएल के भीतर से शुरू करने का कोई तरीका नहीं है।
नमूना फिल्टर तर्क:
if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
log.info("Expired Session ID: " + request.getRequestedSessionId());
response.sendRedirect("sessionExpired");
}
else {
chain.doFilter(request, response);
}
नमूना इंटरसेप्टर:
public class SessionExpiredInterceptor extends HandlerInterceptorAdapter
{
private String redirectLocation = "sessionExpired";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception
{
if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid())
{
response.sendRedirect(redirectLocation);
return false;
}
return true;
}
public String getRedirectLocation() {
return redirectLocation;
}
public void setRedirectLocation(String redirectLocation) {
this.redirectLocation = redirectLocation;
}
}