2012-01-24 55 views
1

所以我有一個字符串,我需要檢查一個有效的格式,我使用了一種模式,以及是否輸入根據我使用自定義驗證器的一些業務規則,值是有效的。現在,如果只有前者沒有發生時才顯示與後者相關的錯誤信息,則客戶會更喜歡它。但據我所知,沒有辦法做出這種區分。 或者任何人都可以想辦法做到這一點?彈簧窗體錯誤標記:檢查特定的錯誤(如果不爲空例如只顯示無效)

回答

0

訣竅是:有兩個不同的約束條件(註解),

  • 一個用於模式,接受空,
  • 和第二不空。

默認情況下,javax.validation.constraints.Pattern「驗證程序」接受空值。

接受字符串。 null元素被認爲是有效的。 (javax.validation.constraints.Pattern的javadoc)

所以,你到底需要做什麼,這是:

@NotNull(message="{validation.notNull}") 
@Pattern(pattern="123" message="{validation.notPattern}") 
String myString; 

補充:

(點評)

不是真的所需的行爲,因爲我想重用bean對象,但每個頁面的條件不相同。 - 傑克·尼克爾斯5分鐘前

在這種情況下,你可以使用所謂的groups(見JSR303 Bean Validation Spec, Chapter 4.1.2 groups - 還有一個例子)。使用@Pattern的默認組和@NotNull的另一組。現在,您可以根據您爲驗證指定的組啓用或禁用驗證規則。

validator.validate(myObject, Default.class); 
validator.validate(myObject, MyGroup.class); 

還有一個問題:在Spring 3.0中,您不能指定要用於自動驗證過程的組。但在3.1中,您可以根據該功能請求SPR-6373(我還沒有嘗試過,但我希望它能正常工作)

+0

由於我想重用bean對象,但其條件不相同每頁。 –

+0

@Jack Nickels:看到我的擴展答案 – Ralph

相關問題