Spring mvc SpringMVC异常处理:如何显示错误页面中传递的参数?

Spring mvc SpringMVC异常处理:如何显示错误页面中传递的参数?,spring-mvc,tomcat,exception-handling,Spring Mvc,Tomcat,Exception Handling,传递的数字“12”不存在。我想在error.jsp页面中显示。“名为'12'的产品不存在。我可以使用什么方法显示该信息 SpringMVC代码 @ExceptionHandler(Exception.class) public ModelAndView errorHandler(HttpServletRequest req, Exception exception) { logger.error("Request: " + req.getRequestURL() + " raised "

传递的数字“12”不存在。我想在error.jsp页面中显示。“名为'12'的产品不存在。我可以使用什么方法显示该信息

SpringMVC代码

@ExceptionHandler(Exception.class)
public ModelAndView errorHandler(HttpServletRequest req, Exception exception) {
    logger.error("Request: " + req.getRequestURL() + " raised " + exception);

    ModelAndView mav = new ModelAndView();
    mav.addObject("exception", exception);
    mav.addObject("url", req.getRequestURL());
    mav.setViewName("product/error");
    return mav;
  }
Tomcat控制台

15:38:23.911 [http-bio-8080-exec-11] ERROR c.p.s.c.controller.ProductController - Request: http://localhost:8080/springchocolatestore/products/12 raised java.lang.RuntimeException

如果尝试访问的参数是查询字符串参数,则可以从
HttpServletRequest
对象轻松访问该参数:

// Assuming that your parameter is named "num".
@ExceptionHandler(Exception.class)
public ModelAndView errorHandler(HttpServletRequest req, Exception exception) {
    logger.error("Request: " + req.getRequestURL() + " raised " + exception);
    ModelAndView mav = new ModelAndView();
    if (req.getParameterMap().containsKey("num")){
        mav.addObject("num", Integer.parseInt(req.getParameter("num"));
    } 
    mav.addObject("exception", exception);
    mav.addObject("url", req.getRequestURL());
    mav.setViewName("product/error");
    return mav;
  }

所有查询字符串参数都被格式化为
string
对象,因为它们必须序列化为URL,所以您必须将参数转换回其本机类型。但是,如果您只是将其显示为消息,则可能不需要进行此转换。

此参数是如何传递的?它是表单中的参数吗?如果此输入被映射到查询字符串参数或标题,可以在
HttpServletRequest
对象中访问。是的,它被映射到查询字符串参数。