如何在Spring MVC中使用AJAX呈现视图

我正在使用Spring MVC,我需要对服务器进行异步调用,并且只刷新页面的一部分。

我实际拥有的是一个返回String的Controller。 我使用JQuery( .post() )函数调用Controller。

我的解决方案的问题是,当我使用ModelAndView作为返回类型时,我无法像我那样呈现JSP。

有没有办法返回已经呈现的视图?

提前致谢。

Neuquino

您可以将此页面放入单独的JSP中,并从您的方法返回指向它的ModelAndView 。 从那时起,AJAX和非AJAX调用之间没有区别。

这个答案只是确认axtavt的答案是有效的。 我花了一分钟才意识到他的建议是什么,所以我想我会发布一个代码片段来帮助任何跟在我后面的人。 不过,感激不尽的是他! 🙂

MyController.java

 @Controller public class MyController { @RequestMapping( method=RequestMethod.GET, value="/mainView" ) public ModelAndView getMainView( ... ) { /* do all your normal stuff here to build your primary NON-ajax view * in the same way you always do */ } /* this is the conroller's part of the magic; I'm just using a simple GET but you * could just as easily do a POST here, obviously */ @RequestMapping( method=RequestMethod.GET, value="/subView" ) public ModelAndView getSubView( Model model ) { model.addAttribute( "user", "Joe Dirt" ); model.addAttribute( "time", new Date() ); return new ModelAndView( "subView" ); } } 

mainView.jsp

 (...)    
(...)

subView.jsp

 (...) 

User Access Details

${user} accessed the system on ${time}

(...)

就是这样! 一件美丽的事; 到目前为止,在Spring中做AJAX一直是一个巨大的痛苦……解析大@Responbody,通过连接JS中的东西构建大量的HTML ……呃……我简直不敢相信这种方法有多么简单和棒极了 – 直到现在才意识到这一点! 🙂