Spring MVC:在AJAX调用

时间:2018-06-17 18:34:50

标签: javascript ajax spring-mvc jsp model-view-controller

我正在使用Spring MVC构建一个项目。我想将JSON对象从当前页面传输到下一页。我所做的是创建一个控制器,我通过POST AJAX调用向其发送对象。然后,控制器为存储为jsp的下一页创建ModelAndView对象,将该对象添加为所述ModelAndView的属性之一,并返回该对象。现在我需要重定向到作为ModelAndView返回的页面。以下是相关代码:

控制器:

public ModelAndView nextPageController(@RequestBody String passedJsonString) {
    ModelAndView nextPage = new ModelAndView("/nextPage.jsp");
    nextPage.addObject("passedJsonString", passedJsonString);
    return nextPage;
}

AJAX致电:

            controllerUrl = "/controller/path";
            $.ajax({
                type : "POST",
                headers : {
                    'Accept' : 'application/json',
                    'Content-Type' : 'application/json'
                },
                url : controllerUrl,
                data : JSON.stringify(jsonDataToBePassed),
                success : function(dataString) {
                    console.log(dataString);
                }
            });

成功执行AJAX调用,并按预期返回ModelAndView对象。现在我需要渲染下一页,控制器中添加的属性保持不变。我意识到我所做的可能是错的,并且可能有更好的方法来实现这一目标,因此任何有关如何做到这一点的指导都可能会受到赞赏。

1 个答案:

答案 0 :(得分:0)

当你对控制器进行ajax调用时,它需要一些结果,并根据你可以继续。

在您的情况下,从控制器成功完成后,响应已返回到ajax函数。

如果要发送到另一个页面,则在控制器中编写一个方法,并在该控制器方法中返回页面(/nePagePage.jsp)。

如下所示代码。

success : function(dataString) {
      window.location.href = "/path/of/controllerMethod"; //redirect to controller method which returns the jsp page
}

并创建如下方法:

@RequestMapping(value="/path/of/controllerMethod")
public ModelAndView returnJspPageControllerMethod() {
    ModelAndView nextPage = new ModelAndView("/nextPage.jsp");
    return nextPage;
}