【问题标题】:Spring MVC: Render page from ModelAndView in AJAX callSpring MVC:在 AJAX 调用中从 ModelAndView 渲染页面
【发布时间】:2018-11-26 16:57:40
【问题描述】:

我正在使用 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 对象按预期返回。现在我需要完整地呈现在控制器中添加的属性的下一页。我意识到我正在做的事情可能是错误的,并且可能有更好的方法来实现这一点,所以任何关于如何做到这一点的指导都可能会受到赞赏。

【问题讨论】:

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


    【解决方案1】:

    当您对控制器进行 ajax 调用时,它会期望得到一些结果,然后您可以继续。

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

    如果要发送到另一个页面,则在控制器中编写一个方法并在该控制器方法中返回页面(/nextPage.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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 2014-11-04
      • 2012-10-04
      • 1970-01-01
      • 2021-11-04
      • 2017-01-28
      • 2011-06-16
      • 1970-01-01
      相关资源
      最近更新 更多