Java 警告:请求方法';获取';不支持
在我的Spring应用程序中,我是这样做的 我的Jsp表单点击超链接表单将被发送Java 警告:请求方法';获取';不支持,java,javascript,spring,jsp,Java,Javascript,Spring,Jsp,在我的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() { $("#
<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>
EDIT1:
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>
$(函数(){
$('.save')。打开(“单击”,函数(e){
e、 预防默认值();
$(“#NAME”).attr(“action”、$(this.attr(“href”)).attr(“method”、“POST”);
$(“#名称”).submit();
});
});
但是我的表单不会到达我的控制器方法
我的代码有什么错误吗?我还尝试了表单标签中的
method=“POST”
。以下是出现错误的原因
单击链接时,链接的href正在调用控制器,因为您没有取消链接的默认操作
因此,代码执行以下操作
method={RequestMethod.GET,RequestMethod.POST}
或method=RequestMethod.GET
-GET将允许您删除表单,只需以下链接(当然,在更新spring代码之后)$(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控制器已连接起来以处理您的请求,下面是一种可能更有趣的方法:
表单提交的默认http方法是GET。由于您需要POST,请指定该选项,它将起作用,liek
method=“POST”
另外,我在代码中看不到正确的url映射。请确认它是否正确。您需要在
表单
标签中指定方法
。是的,你的超链接忽略了表单。因此,将表单上的action
属性设置为href\u form1
,并将您的超链接更改为提交输入,或者(我并不建议这样做)更改您的超链接以进行JavaScript提交。目前,您已经在链接中单击了onclick
和href
设置。下面是最佳实践
<form:form action="href_form1" modelAttribute="NAME" method="POST">
<input type="submit" value="Save" />
另外,您的jQuery选择器
$(“#NAME”)
找不到任何内容,因为您尚未在要获取的表单上设置id
属性。请尝试类似的操作
<form:form action="href_form1" modelAttribute="NAME" method="POST">
<input type="submit"/>
</form:form>
@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";
}
@RequestMapping(value=“href_form1”,method=RequestMethod.POST)
public@ResponseBody字符串href_form1(UserForm UserForm,Model Model)引发异常{
//这里是数据库代码。
model.addAttribute(“NAME”,userForm);
返回“用户更新”;
}
基本上是一个非常简单的表单提交。一旦你开始工作,你就知道你的表单和控制器已经正确设置好了。在此之后,如果要使用锚定标记提交表单,请返回前面的建议,preventDefault
,然后提交表单
希望这有帮助。我已经在尝试同样的问题了。事实上,我正在点击超链接不提交按钮,那么他们对此有什么问题吗?修改答案以回应您的评论。还可以去掉jQuery。您不需要它,而且在任何情况下,它都不应该出现在JSP中。你应该在不同的情况下使用不同的表单元素,或者重新设计你的应用程序。如果他需要发送特定的数据,那么他应该使用不同的表单参数,并在控制器中进行处理。这就是创建MVC的确切原因,就是为了将这类事情分开。那么,你是否有时间更新自己的现代技术,以消除你对我编程技能的反对票和尖刻评论?特别是由于我当前的建议中没有任何内容与您向controllerI发送不同参数的建议不匹配,因此我接受jQuery确实使用了具有任意名称的完全跨浏览器事件对象。有一段时间,情况并非如此,谨慎是很重要的。除此之外,我之前的观点仍然有效,你仍然获得了否决票。您甚至没有看到您在jQuery
$.post()建议中完全忽略了Spring表单吗?jQuery不是这个问题中唯一被标记的东西,它当然不是问题的解决方案。正确,但如果我们提到method=“POST”。。将不起作用。。我的请求映射也正确吗?我正在编辑源代码。如果使用firefox,请使用firebug或在chrome中按F12,然后转到网络部分查看最终形成的url。感谢您的重播。。我使用的是@mplungjan java脚本建议,但表单不会发送。实际上我使用的是eclipse调试透视图。请在实现我们给出的各种建议后更新最新代码。即使在添加method=“POST”之后
这只是因为他有一个href
属性集,该属性集被跟随而不是忽略。这和action
属性没有改变,因为JavaScript没有正确引用表单,因为表单没有id
属性。嗯,没有。你的第一个建议没有任何帮助,是错误的
$(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();
});
});
$(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);
});
});
<form:form action="href_form1" modelAttribute="NAME" method="POST">
<input type="submit" value="Save" />
<form:form action="href_form1" modelAttribute="NAME" method="POST">
<input type="submit"/>
</form:form>
@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";
}