Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 警告:请求方法';获取';不支持_Java_Javascript_Spring_Jsp - Fatal编程技术网

Java 警告:请求方法';获取';不支持

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() { $("#

在我的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>
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正在调用控制器,因为您没有取消链接的默认操作

因此,代码执行以下操作

  • 尝试将表单的操作设置为链接的href
  • 尝试使用POST提交上述表格-这是我理解您想要实现的目标
  • 无论此操作是否成功,浏览器都会立即跟随链接的href,如果onclick没有停止该操作,该链接将尝试使用GET调用控制器。即使代码成功地发布表单,该请求也将被新请求终止,而新请求最终执行GET
  • 在我看来,你有以下几种可能性——其中一些被认为是比其他更好的练习

    非javascript

  • 有一个保存您要保存的内容标识的参数,每个参数有一个表单
  • 将spring方法更改为
    method={RequestMethod.GET,RequestMethod.POST}

    method=RequestMethod.GET
    -GET将允许您删除表单,只需以下链接(当然,在更新spring代码之后)
  • 请注意,为了避免请求某些内容,我在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控制器已连接起来以处理您的请求,下面是一种可能更有趣的方法:


    表单提交的默认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";
    }