我正在使用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对象。现在我需要渲染下一页,控制器中添加的属性保持不变。我意识到我所做的可能是错的,并且可能有更好的方法来实现这一目标,因此任何有关如何做到这一点的指导都可能会受到赞赏。
答案 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;
}