के साथ 405 त्रुटि के लिए कस्टम हैंडलिंग मेरे आवेदन में, मेरे पास कुछ अनुरोध मैपिंग हैं जो केवल पोस्ट की अनुमति देते हैं। अगर कोई उस विशेष पथ पर एक जीईटी अनुरोध आग लगाना होता है, तो उन्हें कंटेनर (टोमकैट) द्वारा खिलाया गया 405 त्रुटि पृष्ठ मिलता है। मैं अनुकूलन के लिए web.xml में 405 त्रुटि पृष्ठ बना और परिभाषित कर सकता हूं।स्प्रिंग वेब एमवीसी
मैं क्या चाहता हूं: कोई अनुरोध जिसके परिणामस्वरूप 405 त्रुटि को एक विशिष्ट नियंत्रक विधि में संभाला जाना चाहिए।
मैं क्या कोशिश की है:
- "विधि = GET" मैपिंग उल्लेख से प्रत्येक के लिए एक समकक्ष के रूप में के साथ एक विधि। यह ठीक काम करता है, लेकिन मुझे प्रत्येक पथ के लिए एक वास्तविक अनुरोधण और विधि बनाने की आवश्यकता है जो केवल पोस्ट की अनुमति देता है। मुझे यह अनावश्यक डुप्लिकेशन और अव्यवस्था मिलती है।
- एक वैश्विक 'पकड़' विधि (अनुरोधण/*): यह काम नहीं करता है, क्योंकि वसंत जीईटी विधि को केवल
- के साथ निर्दिष्ट पथ पर गलत कॉल करने के लिए लेता है, अपवादों को संभालने के लिए एक अपवाद हैडलर-एनोटेटेड विधि कक्षा HttpRequestMethodNotSupportedException: यह काम नहीं करता है। ऐसा लगता है कि वसंत फेंकता है और इस अपवाद को पूरी तरह से अपने ढांचे कोड में पकड़ता है।
- web.xml में अपना स्वयं का 405 निर्दिष्ट करें। यह सही नहीं है, क्योंकि मैं स्थिर त्रुटि पृष्ठ की बजाय अनुकूलित हैंडलिंग करना चाहता हूं।
यह सही है! एक चीज जिसे दूसरों को देखने की आवश्यकता हो सकती है, यह है कि यदि आप ऐसा करने का निर्णय लेते हैं और डिफॉल्ट हैंडलर एक्सेप्शन रीसोलवर ओवरराइड करते हैं, तो आपको इंटरफ़ेस ऑर्डर में निर्दिष्ट getOrder() विधि को ओवरराइड करना चाहिए। उस विधि में, आपको Integer.MAX_VALUE से किसी भी int को कम करना चाहिए। इस तथ्य का कारण यह है कि सबसे कम आदेश वाले हैंडलर को अपवाद पर पहला शॉट मिलता है। कोई बात नहीं धन्यवाद! – Zaan