RequestDispatcher#forward() throws "Request method 'POST' not supported" when forwarding from @PostMapping to @GetMapping

411 Views Asked by At

request.getRequestDispatcher() is not calling the 'unauthorised' method in BaseController.java. Below is my code

UserController.java

 @PostMapping(value = "{domain}/updateUserPoolVesselList")
@ResponseBody
public int updateUserPoolVesselList(
        ServletResponse response, HttpSession session,
        HttpServletRequest request) throws ServletException, IOException 
  {
    
    if(true) {
        request.getRequestDispatcher("/unauthorized").forward(request, response);
        return 0;
    }

BaseController.java

 @GetMapping(value = "/unauthorized")
 public String unauthorized() 
{
    LOG.info("BaseController - unauthorized() method");

    return "unauthorized";
}

Error

2021-02-08 16:21:58 WARN PageNotFound:215 - Request method 'POST' not supported Feb 08, 2021 4:22:01 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [springDispatcher] in context with path [/ScorpioManagementWebApp] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: getWriter() has already been called for this response] with root cause java.lang.IllegalStateException: getWriter() has already been called for this response at org.apache.catalina.connector.Response.getOutputStream(Response.java:550) at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:210) at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:105) at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:105) at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.getOutputStream(SaveContextOnUpdateOrErrorResponseWrapper.java:116) at org.springframework.http.server.ServletServerHttpResponse.getBody(ServletServerHttpResponse.java:89) at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:250) at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:100) at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:231) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174) at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)

0

There are 0 best solutions below