簡體   English   中英

Spring MVC如何進行表單驗證(使用休眠)

[英]How does spring MVC do form validation (using hibernate)

我正在關注一個教程,該教程向我們展示了如何使用Spring MVC框架構建可以驗證的簡單表單。

我們創建了一個使用RequestMapping進行注釋的函數,然后在該函數的第一個參數的@ModelAttribute注釋旁邊添加了@Valid作為注釋。 我們將第一個參數類型稱為ClassA

現在,在ClassA ,我們標注的一些屬性與hibernate驗證注釋(例如@NotNull@Pattern ,等...)

我想了解的是這一切如何運作?

例如,我檢查了@interface NotNull的代碼,但實際上沒有任何作用。

我假設spring MVC框架使用反射來檢測使用Valid來注釋RequestMapping函數的第一個參數,然后在提交表單時調用SOMETHING來驗證ClassA屬性。

SOMETHING在哪里? 它處於休眠狀態嗎? 請編寫代碼... Spring如何找出要調用hibernate代碼的,我們只是將hibernate jars添加到了項目中,但是我們絲毫沒有告訴Spring使用它們。

另外,將Spring MVC綁定到休眠的規范是什么?

有人能用簡單的術語並使用高級的代碼(如果可能的話使用代碼引用)向我解釋事情的運行方式嗎?

我對此很陌生,來自C ++,那里的工作方式截然不同。 我試圖了解Spring運作背后的機制。

您將看到Spring對JSR-303 Bean驗證API的支持。 這些注釋,比如@NotNull@Pattern此JSR的一部分。 由於這只是一個JSR(基本上,JSR只是一組接口),因此它需要一個具體的實現才能真正起作用(稱為提供者)。 這是圖片中出現休眠的地方。 Hibernate擁有JSR-303的實現,稱為hibernate-validator 該API與Hibernate的核心ORM功能無關。 實際上,此API是JSR-303的參考實現 ,這就是為什么在文檔中您會看到它被用作默認提供程序的原因。

因此,作為Spring框架的用戶,您需要知道的是Spring需要在類路徑中找到JSR-303的實現,以便您可以開始使用javax.validation.*包中的那些注釋。

暫無
暫無

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

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