(जैसे HTTP 404 के रूप में) संभाल त्रुटियों विश्व स्तर पर, मैं अपने web.xml में निम्न के समान प्रविष्टियाँ जो एक नियंत्रक के बाहर हो सकता है:वसंत एमवीसी 3.2 - त्रुटि पृष्ठों के लिए सामग्री बातचीत?
<error-page>
<error-code>404</error-code>
<location>/errors/404</location>
</error-page>
मेरी ErrorController में मैं के लिए इसी तरह इसी तरीकों निम्नलिखित:
@Controller
@RequestMapping("/errors")
public class ErrorController {
@RequestMapping(value = "/404", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<ErrorResponse> error404() {
ErrorResponse errorBody = new ErrorResponse(404, "Resource Not Found!");
return new ResponseEntity<ErrorResponse>(errorBody, HttpStatus.NOT_FOUND);
}
}
मुद्दा मैं का सामना करना पड़ रहा है कि ContentNegotiationManager
और संदेश कन्वर्टर्स मैं कॉन्फ़िगर किया है इस मामले में इस्तेमाल नहीं किया जा रहा है। मुझे संदेह है कि चूंकि अनुरोध को त्रुटि पृष्ठ पर रीडायरेक्ट किया जा रहा है, इसलिए सामग्री वार्ता में उपयोग किए गए मूल अनुरोध के गुण खो गए हैं और इसे पूरी तरह से अलग अनुरोध के रूप में माना जाता है। (यानी /mycontroller/badresource.json ->/त्रुटियों/404 (डब्ल्यू/नहीं फ़ाइल एक्सटेंशन) के लिए मूल अनुरोध)
क्या कोई त्रुटि हैडलर में कोई तरीका है जैसे उचित सामग्री प्रकार के निर्धारण और/या प्रतिक्रिया जैसा कि मूल अनुरोध में अनुरोध किया गया है?
इनपुट के लिए धन्यवाद -
यहाँ कैसे मैं इसे सेट होता है। मैंने उस आलेख को देखा है, लेकिन जब तक कि मुझे कुछ याद नहीं आ रहा है, यह केवल नियंत्रकों से अपवादों को संभालता है, न कि सामान्य सर्वलेट त्रुटियों। साथ ही, इस संदर्भ में 'request.getRequestURI() 'आपको त्रुटि पृष्ठ का यूआरआई देता है। ऐसा लगता है कि आपको मूल अनुरोध के यूआरआई प्राप्त करने के लिए 'req.getAttribute (" javax.servlet.error.request_uri ") का उपयोग करना होगा।मैं सोच रहा हूं कि क्या ContentNegotiationManager उस जानकारी को ओवरराइड करने का कोई तरीका है जो त्रुटि पृष्ठ के बजाय मूल अनुरोध से जानकारी पर सेट करता है? – WayneC