【问题标题】:Request method 'POST' not supported when throwing exception抛出异常时不支持请求方法“POST”
【发布时间】:2012-12-19 08:47:50
【问题描述】:

我在一个场景中抛出异常。由@ExceptionHandler 处理。但是当抛出异常时,它会说 Request method 'POST' not supported
控制器代码

@RequestMapping(value = "abcd", method = {RequestMethod.POST,RequestMethod.GET })
public String testAbc(Model model, HttpServletRequest request) throws Exception {
    //some piece of code
    if(someCondition)
        throw new Exception("No data found with id ");
}

ExceptionController 类中的代码

@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex, HttpServletRequest request, HttpServletResponse response) {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("errorMessage", ex.getMessage());
    modelAndView.addObject("errorDetails", ExceptionUtils.getStackTrace(ex));
    modelAndView.setViewName("forward:errorPage");

    return modelAndView;
}

不知道我做错了什么。

【问题讨论】:

  • 这是什么意思?你的异常处理程序?难道只是你的第一行抛出了这个异常,而你正在捕捉它,而你自己的异常并没有真正发挥作用吗?
  • 否。方法中有一些业务逻辑,一个条件应该抛出错误,这是在具有方法handleException的ExceptionController中处理的。

标签: java post spring-mvc exception-handling modelandview


【解决方案1】:

似乎处理/errorPage 的控制器不采用请求方法POST。在您的 @ExceptionHandler 方法中,您通过将视图名称设置为 forward:errorPage 来转发到该页面。

您能否确认errorPage 控制器是否处理POST 方法。

【讨论】:

  • 你能发布一些代码吗? errorPage 是如何映射的。是否有errorPage.jsp 页面,您是否使用<view-controller/> 标签?
  • 我的错。我想:errorPage 是用于渲染相关的jsp。虽然它被映射到控制器,但它不允许 POST 请求。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
相关资源
最近更新 更多