Ajax请求不会重定向到Spring MVC中的视图

时间:2018-11-23 10:46:23

标签: javascript java spring spring-mvc model-view-controller

我正在为应用程序使用Spring MVC和Spring Security。我们正在使用spring表单标签来请求应用程序中的其余调用。出于特定目的,我使用来自jsp的ajax调用。它成功调用了controller方法并进行了处理,但是由于某种原因,controller方法并没有进入视图。我没有收到任何错误或日志中的任何内容。

控制器:

@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";
}

用jsp编写的javascript函数:

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 :(得分:0)

在ajax调用中无法通过这种方式重定向。

最好返回一个成功或失败标志,并在ajax成功函数中执行以下操作。

import * as types from '../constants/actionTypes';
export function getBooks(obj={}) {
  const api = types.API_URL_BOOKS;
  return dispatch => {
    client.get(api).then(data => {
      dispatch({
        type: types.ACTION_BOOK_LIST,
        books: data.response.books
      });
    });
  };
}

在视图页面中,使用this进行重定向:

case types.ACTION_BOOK_LIST:
  return { ...state,
    books: action.books
  };