如何通过AJAX在SpringMVC中呈现tile视图



我正在使用Spring 3 MVC构建一个web应用程序,该应用程序具有通用布局和频繁更改/刷新的"内容"div。内容标记在它自己的磁贴中,我希望能够通过AJAX刷新磁贴,而不刷新整个页面。我知道如何从客户端激发AJAX请求并在控制器中处理它。我最困惑的是Spring配置(哪些视图、视图解析器等)。有人举个例子吗?

基本上,您可以创建一个只包含所需内容的tile视图,而不包含HTML骨架,并在处理ajax请求的控制器中呈现该视图/tile。

假设你有一个页面foo.jsp。当调用http://example.com/myapp/foo时,应该呈现一个以foo.jsp为主体内容的整个html页面。当调用http://example.com/myapp/ajax/foo时,应该只发送foo.jsp,而不发送整个HTML框架,这样客户端就可以通过ajax加载它并替换页面中的一部分。

您将得到两个视图定义,一个是在整个页面中嵌入foo.jsp,另一个只包含foo.jsp本身。app-layout.jsp将包含带有"body"属性的整个HTML框架。

<definition name="foo" template="/WEB-INF/layouts/app-layout.jspx">
    <put-attribute name="body">
        <definition template="/WEB-INF/views/foo.jsp">
            <put-attribute name="message" value="hello"/>
        </definition>
    </put-attribute>
</definition>
<definition name="ajax.foo" template="/WEB-INF/views/foo.jsp">
    <put-attribute name="message" value="hello"/>
</definition>

处理URL /ajax/foo的控制器将返回视图"axax.foo",处理URL /foo的控制器将返返回视图"foo"。

@Controller
@RequestMapping("/ajax")
public void class AjaxController {
   @RequestMapping("/foo")
   public String foo() {
       return "ajax.foo";
   }
}
@Controller
@RequestMapping("/")
public void class AppController {
   @RequestMapping("/foo")
   public String foo() {
       return "foo";
   }
}

最新更新