【问题标题】:the jattempting to forward a get request to a post request returns not supported error Spring将 get 请求转发到 post 请求的尝试返回不支持的错误 Spring
【发布时间】:2018-06-01 13:53:50
【问题描述】:

这是 jsp 页面中调用 get url 的锚标记,我从这个 url 转发到 post 请求 呼叫1 call1url 在控制器中命中了一个获取请求

@RequestMapping(value = "/call1url", method = RequestMethod.GET)
    public String make(HttpServletRequest request) {

        return "forward:/manctril";

    }

转发到控制器中的发布请求

@RequestMapping(value = "/main", method = RequestMethod.POST)
        public String make2(HttpServletRequest request) {

            return "forward:/dash";

        }

尝试执行上述操作会返回类似于

的错误
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported

我的尝试是可能的还是失败了

【问题讨论】:

标签: java spring-boot model-view-controller


【解决方案1】:

我不认为可以使用redirect or forward 从服务器完成 GET 到 POST 调用,您需要重新设计您的解决方案。您可以尝试使用以下方式实现它:

一个。您锚定标签使用 JS 或 AJAX 对控制器进行 POST 调用,然后可以从一个 POST 到另一个 POST 完成,如下所示,通过设置请求属性

request.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);

@RequestMapping(value = "/call1url", method = RequestMethod.POST)
    public String make(HttpServletRequest request) {

        request.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);
        return "forward:/main";

    }

    @RequestMapping(value = "/main", method = RequestMethod.POST)
    public String make2(HttpServletRequest request) {

        return "dash";

    }

b.您的锚标记应该转到 GET 调用,它应该呈现一个 jsp/html 页面,然后 autosubmit jsp 作为页面/正文加载上的 POST,如下所示,

<body onload="document.forms['redirectToURLForm'].submit()">

<form:form method="POST" id="redirectToURLForm"
        name="redirectToURLForm" action="main">
</form:form>

</body>

这将调用POST /main 方法。

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2016-09-13
    相关资源
    最近更新 更多