2010-12-10 105 views
0

我想知道,我是否忽略了一些東西,或者hibernate驗證器沒有提供註釋來驗證2個字段是否相等(如密碼)。 我知道我可以寫我自己的驗證器,但是這好像是標準功能。hibernate驗證器:驗證2個字段匹配

+0

實現的例子:http://git.springsource.org/greenhouse/greenhouse/trees/master/src/main/java/com/springsource/greenhouse/validation – axtavt 2010-12-10 13:31:10

回答

0

剛去了自定義驗證器路線。這裏的其他2個答案與問題沒有關係。 隨着一點谷歌搜索,我發現了一個fieldmatch的例子。

-2

我希望你沒有在數據庫中保存確認密碼。您對此沒有任何現成的驗證,但您必須使用自定義註釋,這非常簡單。

+0

我使用的休眠標籤,因爲WASN」一個hibernate-validator標籤,我不能創建新的。當然,我沒有保證確認領域。 – jack 2010-12-10 08:29:57

-1

Hibernate是一個ORM映射器。

它用於將數據保存到數據庫並再次提取。因此,具有相同值的2個字段沒有多大意義(從持久性的角度來看)。這是你應該檢查你的業務邏輯。

我與Junesh ...不要以可檢索的格式保存您的密碼......查找Hasing和Salting - 或者更好,考慮openID,這樣您就不必再用另一個愚蠢的密碼來打擾您的客戶了。 ..

+0

我使用了hibernate標籤,因爲沒有hibernate-validator標籤,我還無法創建新標籤。當然,我沒有保證確認領域。 – jack 2010-12-10 08:30:13

3

如果你使用Spring框架,那麼你可以使用了Spring表達式語言(規劃環境地政司)。我已經寫了一個小型庫,它提供了基於SpEL的JSR-303驗證器,使得跨場驗證變得非常簡單。看看https://github.com/jirutka/validator-spring

當至少有一個密碼字段不爲空時,這將驗證密碼字段的相等性。

@SpELAssert(value = "password.equals(passwordVerify)", 
      applyIf = "password || passwordVerify", 
      message = "{validator.passwords_not_same}") 
public class User { 

    private String password; 
    private String passwordVerify; 
}