2012-08-30 82 views
4

我正在使用Spring 3 MVC構建一個具有常見佈局和經常更改/刷新的「內容」div的Web應用程序。內容標記位於其自己的Tile中,我希望能夠通過AJAX刷新該貼圖,而無需刷新整個頁面。我知道如何激發客戶端的AJAX請求,並在控制器中處理它。我主要對Spring配置感到困惑(哪些視圖,視圖解析器等)。有沒有人有一個例子?如何通過AJAX在Spring MVC中呈現平鋪視圖?

回答

7

基本上,你可以創建一個只包含你想要的內容而沒有HTML框架的tile視圖,並在處理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將返回視圖「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"; 
    } 
} 
相關問題