如何在Spring MVC中将数组变量从视图传递到控制器

时间:2018-10-30 06:30:18

标签: javascript java ajax spring-mvc

我想将变量从视图传递到控制器,我正在使用ajax调用来实现它,但在下面出现错误。我不知道我在这里想念什么。

  

WARN 41440 --- [nio-8080-exec-9] o.s.web.servlet.PageNotFound:请求方法'POST'不支持

这是我的代码

document.getElementById('btntest').onclick = function(){
  var selchbox = getSelectedChbox(this.form);     // gets the array returned by getSelectedChbox()
  myvalue = JSON.stringify(selchbox);
 //document.write("check check"+selchbox);
  $.ajax({
        type: "POST",
        url: "UserController/delete",
        contentType: "application/json; charset=utf-8",
        data: {key:myvalue},
        cache: false,
        success: function (data) {
                     alert("Are you sure?");
                 },
                 error: function (args) {
                     alert("Error on ajax post");
                 }

    });
  alert(selchbox);
}

我的控制器方法如下所示

@RequestMapping(value = "/delete", method = RequestMethod.POST) 
public String delete(@RequestBody String key) {
    System.out.println("My Array value"+key.toString());
    return key;
}

我在这里想念的是什么?任何帮助

3 个答案:

答案 0 :(得分:0)

至少有两个问题

  1. url:ajax中的“ UserController / delete”与控制器中的“ / delete / {sORGID}”不匹配。
  2. 数据:ajax中的{key:myvalue},属性名称是key,在控制器中是myvalue [],这也应该相同。

答案 1 :(得分:0)

首先,如果要删除,为什么不使用动词delete http?

我认为您没有使用正确的参数:RequestParam用于将sORGID参数映射到URL(您在客户端未使用的参数,必须使用它或将其删除)。 如果要映射Json,则必须使用@RequestBody。

我希望对您有帮助

答案 2 :(得分:0)

最后,我可以将值从视图传递到控制器,我正在发布代码。 这是我的js代码

document.getElementById('btntest').onclick = function(){
  var selchbox = getSelectedChbox(this.form);     // gets the array returned by getSelectedChbox()
var myvalue = JSON.stringify(selchbox);
 //document.write("check check"+selchbox);
  $.ajax({
        type: "POST",
        url: "/delete",
        dataType : "JSON",
        contentType:"application/json; charset=utf-8",
        data: JSON.stringify(selchbox),
        cache: false,
        success: function (data) {
                     alert("Are you sure?");
                 },
                 error: function (args) {
                     alert("Error on ajax post");
                 }

    });
  alert(selchbox);
}

还有我的控制器代码

    @RequestMapping(value = "/delete", method = RequestMethod.POST)
     public String delete(@RequestBody String value){
     System.out.println("My Array value"+value.toString());
     return value;
     }