在我的应用程序中,我有几个只允许POST的RequestMappings。如果某人碰巧在该特定路径上发起GET请求,他们会收到由容器(Tomcat)提供的405错误页面。我可以在web.xml中创建并定义一个405错误页面进行定制。Spring Web MVC的405错误定制处理
我想要的:任何会导致405错误的请求都应该在特定的控制器方法中处理。
我已经试过:
- 与“方法= GET”为每个提到的映射关系的对应方法。这工作正常,但要求我为每个只允许POST的路径创建实际的requestmapping和方法。我觉得这是不必要的重复和混乱。
- 全局'catch'方法(requestmapping/*):这不起作用,因为Spring将GET方法错误地调用到POST指定的路径上
- ExceptionHandler注释的方法来处理异常类HttpRequestMethodNotSupportedException:这不起作用。看来Spring在其框架代码中完全抛出并捕获了这个异常。
- 在web.xml中指定我自己的405。这并不完美,因为我想定制处理而不是静态错误页面。
这是完美的!其他人可能需要注意的一件事是,如果您决定执行此操作并覆盖DefaultHandlerExceptionResolver,则还应该重写Ordered接口中指定的getOrder()方法。在该方法中,您应该返回低于Integer.MAX_VALUE的int。原因在于最低顺序的处理程序在异常处获得第一个镜头。不管怎样,谢谢! – Zaan 2014-10-07 15:32:35