2012-02-08 8 views
0

私はgrailsが初めてで、私のクラスのプロパティのうちの1つの適切な制約を書く方法に問題があります。入力にスペース( '')が含まれているかどうかを確認したい。ここに私のコードです。プロパティがgroovyのスペースを制限するかどうかをチェックする方法?

static constraints = {  

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

私を助けてください。

ありがとうございます!

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

編集:

答えて

1

あなたが好きなカスタムバリデータを使用したいと思うR.バルブエナが指摘したように、あなたがunique: trueにごcountByUsername()バリデータを変更する必要があります。

+0

ありがとうございます。上記のコードにこれを追加してしまえば、Account.countByUsername(it)<1に関連するエラーメッセージが表示されます。Account.countByUsernameを変更せずに特定のバリデーターを追加する方法はありますか(it)<1? – chemilleX3

+1

ユーザ名の場合、カウントクエリ –

+0

@Rではなく、その制約をusername(unique:true)として定義することをお勧めします。ヴァルベーナは正しいです。 countByUsernameバリデーターは、更新があったときに検証を失敗させます。ユニークを使用して:真は行く方法です。 2つの条件を検証するためにカスタムバリデーターが必要だった場合、バリデーターは両方の条件が真であるかどうかをチェックするだけです。 – erturne

1

カスタムバリデーターに加えて、matchesvalidatorを使用して、有効な文字のみを使用することもできます。

元の質問でこれを使用しているようですが、使用している正規表現ではスペースを使用できないため、スペースを含むユーザー名はそのバリデータに失敗します。

他の無効な文字ではなくスペースがある場合に特別なメッセージを送信したい場合は、doelleriの答えが正しい方法です。

関連する問題