【问题标题】:How to render tile views in Spring MVC via AJAX?如何通过 AJAX 在 Spring MVC 中渲染平铺视图?
【发布时间】:2012-08-30 12:48:51
【问题描述】:

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

【问题讨论】:

    标签: java ajax spring tiles


    【解决方案1】:

    基本上,您可以创建一个仅包含您想要的内容而不包含 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 将包含带有“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 的控制器将返回视图“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";
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2014-10-23
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      相关资源
      最近更新 更多