簡體   English   中英

Spring:如何解決驗證錯誤 - >錯誤代碼 - >錯誤消息

[英]Spring: How to resolve a validation error -> error code -> error message

在Spring中,在驗證之后,我們在controller獲得了一個BindingResult對象。

很簡單,如果我收到驗證錯誤,我想重新顯示我的表單,並在每個受影響的字段上方顯示錯誤消息。

因此,為了檢查我的FormObject字段username的字段錯誤,我調用:

FieldError usernameFieldError = bindingResult.getFieldError("username");

好的,現在我持有一個FieldError對象,假設我使用DefaultMessageCodeResolver現在包含4個可能的錯誤代碼。

如何從FieldError - >一個可供用戶使用的字符串?

我在我的webapplication上下文中定義了MessageSource ,因此我可以將單個錯誤代碼映射到消息。

但有時默認消息是最好的,有時我希望兩個錯誤代碼可能有相關的消息,所以我們需要選擇最好的消息。

我可以使用什么方法來確定為字段錯誤提供的最佳錯誤消息?

  • 我是否需要編寫一些算法來檢查所有錯誤代碼並從最具體的方法中挑選?
  • Spring是否為幫助確定最具體的錯誤消息提供了任何支持?
  • 整個過程看起來如此漫長和令人費解,我認為春天應該讓這個東西變得容易。 也許我完全偏離了基地?

正如您所猜測的那樣,您正在努力讓自己變得更加困難。 FieldError對象本身就是MessageSourceResolvable 您無需從中獲取代碼,然后手動將單個代碼移至消息源並繼續查看。 您可以將它傳遞給MessageSource ,它將找到在您的語言環境中定義了轉換的最具體的一個。 (假設你的代碼解析器以正確的順序放置它們。)

在大多數情況下,你甚至不需要這樣做。 通常不需要將Errors放在您的支持對象上並自行翻譯它們。 jsp庫中的form命名空間提供了一個標記,可以為您查找錯誤消息。 您需要做的就是將Errors放在ModelMap 查看文檔:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html#view-jsp-formtaglib-errorstag

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM