2012-09-26 33 views
1

當我使用Spring MVC與 「傳統」(非AJAX,頁面重載-後每個按鈕點擊)網站/應用程序,我通常定義一個控制器:Spring MVC控制器發回jQuery get/post調用的是什麼?

@RequestMapping(value = "/someURL", method = RequestMethod.POST) 
public ModelAndView updateThreshold(@RequestParam("x") String whatever) { 

    ModelAndView mav = new ModelAndView(); 
    max.setView("someView"); 

    // Inject some models into the view. 

    return mav; 
} 

然後我寫了一個JSP查看(someView.jsp),並讓它使用由控制器「注入」的Spring標記/模型。

但是對於jQuery,您有GET/POST請求觸發,並期望僅更新DOM的某些部分。我想知道兩件事:

  • 有了jQuery,Spring MVC控制器設置了什麼「視圖」(mav.setName(...))並返回?換句話說,自從AJAX調用相同的頁面/視圖以來,沒有新的「視圖」。 jQuery結果只需要更新現有的頁面/視圖。
  • 如果存在服務器端錯誤(即某些@RequestParam具有非法值),那麼MVC控制器如何返回jQuery可以使用並顯示給最終用戶的錯誤消息?

我是視覺學習者,所以代碼段(包括客戶端jQuery和服務器側控制器/視圖)是極大理解!提前致謝!

+0

它可以返回許多不同的thigns,http://blog.springsource.org/2010/01/25/ajax-simplifications-in-spring-3-0/ – NimChimpsky

回答

3

Spring MVC並不關心請求是「傳統」請求還是AJAX請求。除了一些潛在的額外頭文件,兩種請求類型完全相同。

因此,如果您需要使用AJAX請求刷新頁面的一部分,則可以像使用「傳統」頁面一樣使用控制器,然後轉發到爲該部分生成標記的視圖必須刷新的頁面。因此,代替生成完整的HTML頁面(從<html></html>),視圖只會生成頁面的一部分。

您也可以發送讓控制器返回HTML標記以外的內容:例如XML或JSON。在這種情況下,處理響應的JavaScript函數將使用接收的數據並更新頁面DOM。

錯誤的處理方式與「傳統」請求完全相同。例如,如果出現500錯誤,則取決於處理AJAX響應的JavaScript代碼,以執行它認爲合適的操作。例如,顯示一個警報彈出窗口或類似的東西。