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

Я хочу отправить возвращаемое значение метода контроллера (т. Е. Флаг) на мой взгляд, и в поле зрения мне нужно отобразить предупреждающее сообщение в соответствии с этим флагом. Это код моего контроллера

@RequestMapping(value = "/testing", method = RequestMethod.POST)
public Boolean testing(@RequestBody String value, HttpSession session, String username, ModelMap modelMap, HttpServletRequest request) throws Exception {
  Boolean flag = false;
  User userData = (User) session.getAttribute("MEMBER");
  for (OrgData org: orgDataRepository.findAll()) {
    if (m.getValue() != null) {
      sourceAccessToken = (String) m.getValue();
      flag = true;
    } else {
      System.out.println("Refresh token is expired");
      flag = false;
    }
  }
  return flag;
}

Код моего вида выглядит примерно так:

let btnVal = document.querySelectorAll('.test-btn');
for (let i = 0; i < btnVal.length; i++) {
  let btns = btnVal[i];
  btns.onclick = function() {
    var selchbox = getSelectedChbox(this.form); // gets the array returned by getSelectedChbox()
    if (selchbox.length == 1) {
      //document.write("check check"+selchbox);
      $.ajax({
        type: "POST",
        url: "/testing",
        dataType: "JSON",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(selchbox),
        cache: false,
        success: function(data) {
          alert("SUCCESS!!!");
        },
        error: function(args) {
          /* alert("Error on ajax post");
          console.log("Error"+args); */
        }

      });
    } else {
      alert("Please select only one check box");
    }

  }
}

Я хочу отправить это логическое значение в этом вызове ajax и отобразить всплывающее окно или окно предупреждения. Как этого добиться?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Похоже, вы ничего не делаете с вашим значением сервера. Вам необходимо вернуть его клиенту. Поскольку вы используете Spring, вы должны иметь возможность вернуть json на ваш вызов ajax.

@RequestMapping(value="/testing", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public Map testAjax() {
  return Collections.singletonMap("flag", true);
}

Тогда ваш ajax-вызов может получить значение:

        success: function (data) {
        console.log("Success");
             console.log(data);
             alert(data.flag)
      },
      error: function (args) {
          console.log("error");
          console.log(args);
      }
0 голосов
/ 01 ноября 2018

Удалите свойство dataType: "JSON" из вашего вызова ajax. B'coz, что вы возвращаете, является простым логическим значением. Но свойство указывает, что ожидаемый ответ - это JSON, что в данном случае неверно. А затем используйте код как

success: function (data) {
      if (data) {
          // your true code here
      } else {
         // your false code here
      }
 }
0 голосов
/ 01 ноября 2018

Просто попробуйте такой код в функции успеха:

 success: function (data) {
        if (data) {
            alert("Success!");
        } else {
            alert("False value.");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...