簡體   English   中英

Spring中如何設置@NotEmpty注解消息?

[英]How to set @NotEmpty annotation messages in Spring?

在一個 Java (+ Spring Boot) 項目中,有一個使用javax.validation的符號,如下所示:

@NotEmpty(message = "validation.product.notEmpty")
private String product;

@NotEmpty(message = "validation.username.password")
private String password;

我看了一下它們的用法,但有些地方我無法理解:

1.是否有特殊用途,例如顯示validation.username.password的條件消息? 例如,如果用戶名字段是 null,則顯示此消息? 還是跟product領域完全一樣?

2.我搜索了項目,但找不到validation.product.notEmptyvalidation.username.password 那么,它們是如何工作的呢? 我認為這些消息應該有一個定義,但我沒有找到,它是否來自javax.validation的默認消息?

  1. @EmailRegex 和@Email 有什么區別? 是否還需要將@NotEmpty 與這些@EmailRegex 或@Email 注釋一起使用?

@Email不會為空字符串拋出錯誤。 因此,如果您始終需要 email,則需要@NotEmpty來確保此字符串不為空。

@Email將認為blabla@blabla.blabla形式的所有內容都是有效的。 如果你想進一步限制這一點,你可以使用@EmailRegex ,這樣你就可以通過定義你自己的正則表達式來只允許blabla@blabla.eu

@EmailRegex好像沒有包含在hibernate注解或者spring注解中。 因此,它要么是從其他地方導入的自定義注釋,要么只是您應用程序的自定義注釋。 檢查代碼以查看它的實際行為,但從它的名稱來看,我認為它的行為與我在上面解釋的一樣。

  1. 我搜索了項目,但找不到 validation.product.notEmpty 或 validation.username.password。 那么,它們是如何工作的呢? 我認為這些消息應該有一個定義,但我沒有找到,它是否來自 javax.validation 的默認消息?

它應該與{....}一起使用,例如@NotEmpty(message = "{validation.username.password}") private String password; . 在這種情況下,Spring 將自動從屬性文件中讀取屬性並應用屬性validation.username.password的值。 如果它不存在,則將 go 添加到 application.properties 或 application.yaml 並添加該屬性。

關於最后一個的更多注釋 我在后端-前端應用程序中看到了一些奇怪的情況,這可能就是您的情況。

@NotEmpty(message = "validation.username.password")

驗證失敗時拋出的實際消息是validation.username.password 我見過前端讀取該消息並將值綁定到該消息的情況。 我已經看到當前端支持多種語言並每次為每種語言綁定另一個值時使用它。 這可以解釋為什么您的應用程序中沒有 { } 或這樣的屬性。

 @NotEmpty(message = "{validation.username.password}")

具有現有屬性validation.username.password= password can not be empty將導致驗證失敗時消息password can not be empty以傳遞。

暫無
暫無

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

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