2012-12-16 15 views
7

कहो में से त्रुटि पेज नियंत्रक एक यूआरएल जो त्रुटि हुई थी (404) हो रही है, मैं निम्नलिखित web.xml प्रविष्टि के साथ एक वसंत MVC अनुप्रयोग है :वसंत MVC

@RequestMapping({"","/"}) 
@Controller 
public class RootController { 

    @RequestMapping("error/{errorId}") 
    public String errorPage(@PathVariable Integer errorId, Model model) { 
     model.addAttribute("errorId",errorId); 

     return "root/error.tile"; 
    } 
} 

अब उपयोगकर्ता का अनुरोध न के बराबर यूआरएल/उपयोगकर्ता/दिखाएँ/iamnotauser जो त्रुटि पृष्ठ नियंत्रक शुरू हो गया। मैं रूटकंट्रोलर की त्रुटि पेज() विधि से मॉडल में डालने और त्रुटि पृष्ठ पर प्रदर्शित करने के लिए यह गैर-मौजूद '/ user/show/iamnotauser' URL कैसे प्राप्त करूं?

उत्तर

14

चाल अनुरोध विशेषता javax.servlet.forward.request_uri है, इसमें मूल अनुरोधित यूरी शामिल है।

@RequestMapping("error/{errorId}") 
public ModelAndView resourceNotFound(@PathVariable Integer errorId, 
                HttpServletRequest request) { 
    //request.getAttribute("javax.servlet.forward.request_uri"); 
    String origialUri = (String) request.getAttribute(
               RequestDispatcher.FORWARD_REQUEST_URI); 

    return new ModelAndView("root/error.jspx", "originalUri", origialUri); 
} 

आप अभी भी सर्वलेट एपीआई 2.5 का उपयोग करते हैं, तो निरंतर RequestDispatcher.FORWARD_REQUEST_URI मौजूद नहीं है, लेकिन आप request.getAttribute("javax.servlet.forward.request_uri") उपयोग कर सकते हैं। या javax.servlet:javax.servlet-api:3.0.1

+0

हम सर्वलेट एपीआई 3.0.x का समर्थन करने वाले सर्वर पर हैं, लेकिन web.xml में विनिर्देश के अनुसार 2.5 का उपयोग कर रहे हैं। इस सेटिंग के साथ उपर्युक्त दृष्टिकोण कुछ भी उपयोगी नहीं थे, लेकिन 'request.getAttribute ("javax.servlet.error.request_uri"); चाल चल रही थी –