2011-02-27 30 views
0

我有一個ajax請求進入我的控制器,我的驗證工作很好。在控制器中,如果出現故障,我會調用失敗的jsp頁面。唯一的問題是,我不知道如何在failure.jsp頁面上向用戶輸出錯誤。我顯然沒有訪問spring的表單標籤。你應該在這種情況下做什麼?Spring-MVC:如何在使用AbstractCommandController時顯示錯誤?

編輯:我真的很想知道的是,當我使用AbstractCommandController時,如何訪問JSP頁面上的綁定錯誤。

回答

2

我過去所做的是使用HTTP頭將消息發送回AJAX請求者(XMLHTTPRequest對象)。您不會以這種方式獲得完整的綁定和驗證支持,但它是傳遞消息的簡單方法。

另一個可以讓你充分發揮Spring綁定和驗證功能的選項如下。我假設你通過AJAX提交表單。您可以執行標準的彈簧綁定和驗證,如果發生錯誤,則發回並使用問題輸入旁邊的異常消息替換表單。通過這種方式,您可以充分利用Spring綁定和驗證的全部功能,同時獲得所需的AJAX優點。這將要求你將你的表單分隔成一個單獨的JSP頁面,這樣你就可以通過AJAX提交和錯誤返回這個表單。

對此評論

我的問題就是如何在我使用 的AbstractCommandController從JSP訪問 BindingErrors。 Ajax 在 公式中並不重要。我只是不想使用一個 formController,因爲它沒有使 有意義。

認爲你可以簡單地設置一個變量在你的模型是這樣的:

ModelAndView.addObject(this.getCommandName(), errors) 

這將在AbstractCommandController的

protected abstract ModelAndView handle(
     HttpServletRequest request, 
     HttpServletResponse response, 
     Object command, 
     BindException errors) 
    throws Exception 

方法來完成。確保模型屬性的名稱是您的命令的名稱(在setCommandName方法中設置)。

這是未經測試,從內存中。

+0

我的問題是如果我使用AbstractCommandController,如何從JSP訪問BindingErrors。 Ajax在這個等式中並不重要。我只是不想使用formController,因爲它沒有意義。如果你能回答這個問題,那麼我會給你這個問題的正確答案。 – 2011-02-27 22:50:32

+0

對不起,這花了永遠的批准,但在這裏,你是。好的回答先生。 – 2011-03-04 02:49:00

-1

您可以檢查BindException對象是否有錯誤(並捕獲並處理異常),並在Ajax響應中返回有關它們的信息。如果您使用的是JSON,則可以將錯誤信息列表與「錯誤」鍵配對。然後前端需要檢查並顯示這些錯誤。

+0

我該如何檢查bindException對象? – 2011-02-27 21:30:05

+0

我想我所問的不是我如何在控制器中弄清楚這一點,而是如何讓我的視圖可以訪問綁定對象。我不確定這個控制器是否支持它。 – 2011-02-27 21:43:06

+0

據我所知,你不能直接給視圖綁定對象,你必須手動映射它 - 使用BindException創建一個錯誤列表(以你選擇的任何格式),客戶端可以過程和顯示。在過去,我用一個「錯誤」鍵和所有發生錯誤的值列表向響應JSON添加了一對。 – 2011-02-28 00:00:31

相關問題