2012-02-08 75 views
0

我是grails的新手,我對如何編寫我的類的其中一個屬性的正確約束存在問題。我想檢查輸入是否包含空格('')。這是我的代碼..如何檢查一個屬性是否在常規中佔據一個空間?

static constraints = {  

username nullable: false, blank: false, minSize: 6, matches: /[A-za-z0-9_]{6,}/, validator: { 
      Account.countByUsername(it) < 1 
     } 

請幫幫我。

謝謝!

回答

1

你想使用一個自定義的驗證,如:

username validator: { val -> if (val.contains(' ')) return 'value.hasASpace' } 

編輯:R.瓦爾布埃納指出的那樣,你需要你的countByUsername()驗證更改爲unique: true

+0

謝謝你這麼多,但一旦我補充說,我的代碼貼上面,我得到了有關Account.countByUsername(它)<1的錯誤消息,是有什麼辦法可以添加您給予驗證,而不會改變Account.countByUsername (it)<1? – chemilleX3 2012-02-08 03:26:02

+1

對於用戶名,您可能希望將該約束定義爲username(unique:true),而不是執行計數查詢 – 2012-02-08 05:55:14

+0

@R。 Valbuena是正確的。您的countByUsername驗證器將導致驗證在任何更新時失敗。使用獨特的:真實的是要走的路。僅供參考,如果您需要自定義驗證程序來驗證兩個條件,驗證程序只會檢查這兩個條件是否正確。 – erturne 2012-02-08 13:04:57

1

除了自定義驗證程序,您還可以使用matchesvalidator以確保僅使用有效字符。

它看起來像你使用這個在你原來的問題,你正在使用不允許的空間正則表達式,所以用空間的用戶名應是失敗的驗證。

如果你想給一個特殊的信息給別人,如果他們有它的空間(而不是其他一些無效字符),然後doelleri的答案是這樣做的正確方法。

相關問題