gpt4 book ai didi

java - 警告 : Request method 'GET' not supported

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:41 27 4
gpt4 key购买 nike

在我的 Spring 应用程序中我是这样做的..

我的 Jsp 表单点击超链接表单将被发送..

<form:form action="user" modelAttribute="NAME">

<a href="href_form1" onclick="onClick_Save()" class="save">Save</a>

</fomr:form>
<script>
function onClick_Save() {
$("#NAME").attr("action", $('.save').attr("href"));
$("#NAME").submit();
});
</script>

在我的 Controller 类中,我编写了方法。

@RequestMapping(value = "href_form1", method = RequestMethod.POST)
public @ResponseBody String href_form1(UserForm userForm,Model model)throws Exception {
//Database code here.
model.addAttribute("NAME", userForm);
return "User Updated";
}

编辑 1:

WARNING: Request method 'GET' not supported

我收到错误页面。

HTTP Status 405 - Request method 'GET' not supported

编辑:修改如下代码后

   <script>
$(function() {
$('.save').on("click",function(e) {
e.preventDefault();
$("#NAME").attr("action", $(this).attr("href")).attr("method","POST");
$("#NAME").submit();
});
});
</script>

但是我的表单不会到达我的 Controller 方法。

我的代码有什么问题吗?我还在表单标签中尝试了 method="POST"

最佳答案

这是你得到错误的原因

链接的 href 在单击时调用 Controller ,因为您没有取消链接的默认操作

所以代码做了以下事情

  1. 尝试将表单的操作设置为链接的 href
  2. 尝试使用 POST 提交所述表单 - 这就是我所了解的您想要实现的目标。
  3. 无论这是否成功,浏览器都会立即跟随链接的 href,该链接将尝试使用 GET 调用 Controller ,因为如果 onclick 没有停止该操作,则链接将执行此操作。即使代码成功发布表单,该请求也会被最终执行 GET 的新请求终止

在我看来,您有以下可能性 - 其中一些可能比其他的更好。

非javascript

  1. 有一个参数,用于保存您要保存的内容的标识 - 以及每个参数的表单
  2. 将您的 Spring 方法更改为
    method = { RequestMethod.GET, RequestMethod.POST}
    method = RequestMethod.GET - GET 将允许您摆脱表单并仅具有以下链接(当然在更新 spring 代码之后)
 <a href="href_link?user=user1">Save User1</a>

如果你愿意

JavaScript 辅助

在表单中有一个参数,用于保存您要保存的内容的标识,通过 JavaScript 设置该参数并执行 MANDATORY return falsepreventDefault 取消链接:

<!-- this is an example of the rendered form -->
<form action="href_form1" id="NAME" method="POST">
<input type="hidden" name="saveItem" id="saveItem" value="" />
</form>

<a href="#" class="saveLink" data-save="save item 1">Save item 1</a>
<a href="#" class="saveLink" data-save="save item 2">Save item 2</a>
<a href="#" class="saveLink" data-save="save item 3">Save item 3</a>

请注意我在 href 中没有链接以避免请求某些东西

用于此过程的 jQuery:

$(function() {
// assuming form ID="NAME"
$(".saveLink").on("click",function(e) {
e.preventDefault(); // do not follow link
$("#saveItem").val($(this).data("save")); // set the hidden field
$("#NAME").submit();
});
});

假设您的 spring Controller 已连接以处理您的请求,这对您来说可能是一种更有趣的方式:

DEMO

  $(function() {
$('.save').on("click",function(e) { // passing event
e.preventDefault(); // jQuery will normalise it for all modern browsers
// post the href of the link to the server and return the result in a
// container with ID result
$.post($(this).attr("href"), function(data) { // or $.get if you want
$('#result').html(data);
});
});

关于java - 警告 : Request method 'GET' not supported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com