簡體   English   中英

從Spring MVC中的錯誤頁面控制器獲取導致錯誤(404)的URL

[英]Getting an URL which led to error (404) from error-page controller in spring MVC

說,我有一個帶有以下web.xml條目的Spring MVC應用程序:

<error-page>
    <error-code>404</error-code>
    <location>/error/404</location>
</error-page>

並跟隨錯誤頁面控制器:

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

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

        return "root/error.tile";
    }
}

現在用戶請求不存在的URL / user / show / iamnotauser,它觸發了錯誤頁面控制器。 如何從RootController的errorPage()方法獲取這個不存在的'/ user / show / iamnotauser'URL以將其放入模型並顯示在錯誤頁面上?

技巧是請求屬性javax.servlet.forward.request_uri ,它包含原始請求的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);
}

如果仍然使用Servlet API 2.5,則常量RequestDispatcher.FORWARD_REQUEST_URI不存在,但您可以使用request.getAttribute("javax.servlet.forward.request_uri") 或者升級到javax.servlet:javax.servlet-api:3.0.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM