2012-04-07 191 views
2

我使用hibernate驗證註釋@Email GWT客戶端驗證有問題。我把這個註解放在實體getter上,當我檢查約束違規(我把這封電子郵件:test @ test)後,我得到一個錯誤信息「不是一個格式正確的電子郵件地址」。但是當我在服務器端測試這個時候,比這個電子郵件地址通過。有沒有人有這個問題?休眠@電子郵件驗證失敗

回答

3

由Hibernate Validator提供的EmailValidator實現使用java.util.regex.Pattern來驗證輸入字符串。由於GWT將Java代碼交叉編譯爲Javascript,因此它僅支持JS級別RegEx,因此不允許使用java.util.regex.Pattern

因此,如果你看到GWT重新實施的EmailValidator,你會看到這個驗證,特別是沒有實現/支持:http://grepcode.com/file/repo1.maven.org/maven2/com.google.gwt/gwt-user/2.4.0/org/hibernate/validator/constraints/impl/EmailValidator.java?av=h

9

至於解決方法是使用模式註釋:

@Pattern(regexp ="^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.(?:[a-zA-Z]{2,6})$") 
+0

這工作。但是UI消息不是用戶友好的。我發現使用RegEx而不是java.util.regex.pattern重寫hibernate驗證器會更好。 – robert 2015-10-22 12:59:54