在 Hibernate Validator 中,我們經常需要自訂驗證訊息。有時,我們需要存取實例變數來動態地產生訊息。那麼,在 Hibernate Validator 中,如何存取實例變數呢?首先,我們需要在驗證註解中使用佔位符來引用實例變數。然後,在訊息資源檔案中,我們可以使用"{}"來取得實例變數的值。透過這種方式,我們可以靈活地插入實例變數的值,從而產生個人化的驗證訊息。在本文中,php小編魚仔將為您詳細介紹在 Hibernate Validator 中插入訊息時如何存取實例變數。
當使用 crudrepository::save
將物件插入儲存庫時,我使用 hibernate validator 和 spring 來驗證物件。假設我們有課:
public class Person { public int id; @NotBlank(message="User with id: ${id} is missing name") public String name; }
我希望內插訊息能夠存取 person 實例的所有字段,例如id 字段,然後像「${id}」或「${this.id}」一樣存取它們。文件提到了一些關於能夠存取所有 bean 屬性的內容,但我猜它只能與類別級約束一起使用。
是否有某種方法可以在不訴諸類別層級約束的情況下做到這一點?
約束驗證器無法存取欄位本身以外的任何資訊。因此,換句話說,沒有辦法存取同級欄位。這與約束的範圍有關。這樣看:
@NotBlank public String name;
非空的 name
可以是個人字段,也可以是公司或其他類別中的字段。它與 @notblank
所在位置沒有區別。
因此,正如您在問題中所建議的那樣,為了在插入訊息時訪問其他類別字段,約束應該處於類別層級...
為了不建立大量自訂約束,您可以考慮查看 @scriptassert
。
另請注意,constraintviolationexception
包含constraintviolation
列表,從中您應該能夠存取葉bean (getleafbean()
) 或根bean (getrootbean ()
),並取得您的資訊拋出異常後需要。
以上是在 Hibernate Validator 中插入訊息時如何存取實例變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!