Ale*_*min 8 java error-handling spring spring-mvc
说,我有一个带有以下web.xml条目的Spring MVC应用程序:
<error-page>
<error-code>404</error-code>
<location>/error/404</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
并跟随错误页面控制器:
@RequestMapping({"","/"})
@Controller
public class RootController {
@RequestMapping("error/{errorId}")
public String errorPage(@PathVariable Integer errorId, Model model) {
model.addAttribute("errorId",errorId);
return "root/error.tile";
}
}
Run Code Online (Sandbox Code Playgroud)
现在用户请求不存在的URL/user/show/iamnotauser,它触发了错误页面控制器.如何从RootController的errorPage()方法获取这个不存在的'/ user/show/iamnotauser'URL以将其放入模型并显示在错误页面上?
Ral*_*lph 15
诀窍是请求属性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);
}
Run Code Online (Sandbox Code Playgroud)
如果您仍然使用Servlet API 2.5,那么常量RequestDispatcher.FORWARD_REQUEST_URI不存在,但您可以使用request.getAttribute("javax.servlet.forward.request_uri").或升级到javax.servlet:javax.servlet-api:3.0.1
| 归档时间: |
|
| 查看次数: |
2967 次 |
| 最近记录: |