在Spring中,經過驗證,我們在controller
中得到一個BindingResult
對象。Spring:如何解決驗證錯誤 - >錯誤代碼 - >錯誤信息
足夠簡單,如果我得到驗證錯誤,我想重新顯示我的表單,並在每個受影響的字段上方顯示錯誤消息。
所以檢查領域錯誤的現場username
我FormObject
我打電話:
FieldError usernameFieldError = bindingResult.getFieldError("username");
太好了,現在我持有FieldError
物體,假設我使用的DefaultMessageCodeResolver
現在包含類似4個可能的錯誤碼。
我該如何從FieldError
- >一個字符串是消費者可以使用的?
我在我的web應用上下文中定義了MessageSource
,所以我可以將單個錯誤代碼映射到消息。
但有時默認的信息會最好,有時候我希望兩個錯誤代碼可能有相關的信息,所以我們需要選擇最好的信息。
使用什麼方法來確定最佳可能出現的錯誤消息以顯示字段錯誤?
- 我是否需要編寫一些算法來檢查所有的錯誤代碼,並從最具體的?
- 春天是否提供任何幫助確定最具體的錯誤信息?
- 整個過程看起來如此漫長和複雜,我認爲春天應該讓這件事變得容易。也許我完全脫離基地?
哦,我明白了,我沒趕上MessageSource.get(MessageSoureResolvable,...),我只注意到了get(字符串,...)選項,這是關鍵環節(實際上我可能已經注意到了,並且在學習新的框架/ API時,我們迷失了無數的細節)。謝謝!! – 2010-11-17 08:20:00
關於JSP taglib的有趣點,我正在使用Velocity,但Spring提供了宏的形式。但我還沒有使用它,因爲它似乎相當反春天,即使我的視圖呈現與春季框架。我認爲我的控制器現在調用Spring特定的MessageSource而不是Java標準的ResourceBundle已經夠糟糕了。但是,也許我正在推翻它?這是我第一次與春天。 – 2010-11-17 08:22:29
確實如此,但就視圖技術而言,通常最終會與*相關聯。*如果您嘗試僅使用JSTL和servlet API,那麼您會做很多重新發明! WebMVC和WebFlow是非侵入性的,使用標籤庫,您可以很容易地創建自己的.tag文件來包裝它們,並將依賴關係「隔離」到稍後可以更改實現的單個位置。使用標籤還可以消除對後臺對象中Errors接口的依賴,使您可以使用無彈簧的pojo。 – Affe 2010-11-17 18:12:51