如何通过AJAX在Spring MVC中呈现瓷砖视图?

4

我正在使用Spring 3 MVC构建一个具有常见布局和经常更改/刷新“内容”div的Web应用程序。内容标记在其自己的Tile中,我希望能够通过AJAX刷新该Tile而不刷新整个页面。我知道如何从客户端发出AJAX请求并在控制器中处理它。我主要困惑于Spring配置(哪些视图、视图解析器等)。有人有例子吗?

1个回答

7
基本上,您可以创建一个瓦片视图,该视图仅包含所需的内容而不包含HTML骨架,并在处理ajax请求的控制器中呈现此视图/瓦片。假设您有一个名为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将包含整个HTML骨架和“body”属性。
<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 的控制器将返回视图"ajax.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";
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接