Ajax-запрос не перенаправляется для просмотра в Spring MVC - PullRequest
0 голосов
/ 23 ноября 2018

Я использую Spring MVC и Spring Security для приложения.Мы используем пружинные теги формы для запроса остальных вызовов в приложении.Для конкретной цели я использую ajax-вызовы из jsp.Он успешно вызывает метод контроллера и выполняет обработку, но метод контроллера по какой-то причине не попадает в представление.Я не получаю никаких ошибок или чего-либо в журналах.

Контроллер:

@RequestMapping(value="/createRunOne/saveRun", method = RequestMethod.POST,  consumes = MediaType.APPLICATION_JSON_VALUE)
public String saveRun(@RequestBody Run run, Model model){

    try{
        this.runService.saveRun(run);

    } catch (Exception ex){
            model.addAttribute(ERROR, ex.getMessage());
            ex.printStackTrace();
    }
    return "redirect:/run/list";
}

Функция javascript, написанная на jsp:

function saveRun() {

                var run = {
                    runName: $('#name').val(),
                    description: $('#description').val(),
                    justification: $('#justification').val(),
                    scheduledTime: new Date($('#scheduledTime').val()),
                    fromReceiptDate: new Date($('#fromdatepicker').val()),
                    toReceiptDate: new Date($('#todatepicker').val()),
                    sourceKeyString: $('#segmentSelect').val().toString(),
                    selectedBlocks: $('#blockList').val().toString(),
                    compareFilter: $('#filtercase').val(),
                    productsSelected: selectedList.toString()
                };

                headers['Content-Type'] = 'application/json';
                headers['dataType'] = 'json'

            $.ajax({
                type: "POST",
                url: "createRunOne/saveRun",
                data: JSON.stringify(run),
                headers: headers,
                responseType: "application/json",

                success: function(response, data){

                    if(data=='success'){

                        }
                },
                error: function (xhr,  textStatus, errorThrown) {
                    alert(xhr.status);
                }
            });

        }

1 Ответ

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

Невозможно перенаправить таким образом при вызове ajax.

Лучше вернуть один флаг успеха или сбоя, а в функции успеха ajax - ниже.

@RequestMapping(value="/createRunOne/saveRun", method = RequestMethod.POST,  consumes = MediaType.APPLICATION_JSON_VALUE)
public String saveRun(@RequestBody Run run, Model model){

    try{
        this.runService.saveRun(run);

    } catch (Exception ex){
            model.addAttribute(ERROR, ex.getMessage());
            ex.printStackTrace();
    }
    return "success";
}

Видиспользуйте страницу this для перенаправления:

success: function(response, data){
      if(data=='success'){
           window.location.replace('<redirect url>');
      }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...