2011-05-17 88 views
4

錯誤,我有相關的彈簧3 MVC,Ajax和形式的問題:錯誤。Spring MVC的形式:使用Ajax

我有一個表格,我提交到服務器,我使用Spring MVC的。我有所有的驗證,控制器等設置和工作正常。當我提交未通過驗證的數據時,我收到錯誤消息,並按照我的表單顯示在窗體上:錯誤標籤在我的jsp中。

我的問題是...

如果我想在轉換爲Ajax方法,我還可以拿一個「正常」的Spring MVC應用程序(即所有的基礎設施的優勢,特別是驗證和形式:錯誤功能)將錯誤返回(並顯示在瀏覽器上)?我看到如何提交Ajax請求,但我不知道如何(或如果)我仍然可以利用jsp的form:errors功能。

有誰知道,如果可以做到這一點,如果是的話,指出我在適當的大方向?

在此先感謝。

回答

5

你不能,因爲像<form:errors>標籤被評估服務器端和嵌入的錯誤消息/在HTTP響應中的HTML內容元素。由於對服務器的AJAX請求通常將XML或JSON返回給響應(而不是HTML),然後由客戶端JavaScript進行解析,Spring就沒有必要綁定到請求/表單並將錯誤消息添加到內容。

4

不是,沒有。當頁面首次生成服務器端時,form:error標記會發揮它的魔力。如果您沒有重新生成頁面服務器端,因爲您使用了ajax,所有這些都不會運行。 Errors對象本身並不真正返回到客戶端。你可以將它序列化爲JSON,但是在那裏有很多你不需要的東西。當然,它通常只有代碼,而不是實際的消息,並且需要消息源來查找翻譯。

底線是,你需要手動發送錯誤和處理設置在javascript自己的錯誤信息,當你回來的Ajax響應。

5

春季提交表格時,我已經使用了很多AJAX的。基本上我所做的是我創建了一個form.jsp文件,然後從AJAX調用中返回。由於AJAX將返回帶有所有表單標籤的整個表單,因此我可以充分利用服務器端驗證。

所以,如果我有一個包含表單的頁面,我可以,例如,有作爲的形式容器一個div

<div id="form-container"> 
    <form id="myform"> 
     Normal form here ... 
    </form> 
</div> 

當我提交表單,我可以加載形式.JSP通過使用jQuery,例如,

$('#myform').submit(function() { 
    $('#form-container').load('ajax/somehandler'); 
}); 

所以,你所要做的就是從控制器的所有,你將不得不與非AJAX方法以及正常綁定返回form.jsp。你明白了嗎?

+0

是的。我會嘗試的。謝謝! – Dan 2011-05-24 21:01:55