Как передать переменную массива из представления в контроллер весной MVC - PullRequest
0 голосов
/ 30 октября 2018

Я хочу передать переменную из представления в контроллер. Я использую 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 голосов
/ 30 октября 2018

Во-первых, если вы хотите удалить, почему бы не использовать глагол удалить http?

Я думаю, что вы не используете правильный параметр: RequestParam используется для сопоставления вашего параметра sORGID с URL-адресом (параметр, который вы не использовали на стороне клиента, вы должны использовать его или удалить). Если вы хотите отобразить Json, вы должны использовать @ RequestBody.

Надеюсь, это поможет

0 голосов
/ 30 октября 2018

Наконец-то я смог передать значения из моего представления в контроллер, который я отправляю. Это мой код 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;
     }
0 голосов
/ 30 октября 2018

В аренду две проблемы

  1. url: "UserController / delete" в вашем ajax не будет совпадать с "/ delete / {sORGID}" в вашем контроллере.
  2. data: {key: myvalue} в вашем ajax, имя свойства является ключевым, в вашем контроллере это myvalue [], оно также должно быть таким же.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...