2012-03-03 13 views
1

私はGrailsの初心者です。 Grails(ver。2.0.1)にdomainNameフィールドを持つDomainクラスがあります。私のDomainConstraints.groovyでは、私が持っている:または「:偽ブランク」:Grails:コントローラのドメインの制約を動的に変更する

constraints = { 
    domainName blank: false, matches: "^([^.]{0,63}\\.)*([^.]{1,63})\$" 
} 

が、いくつかの状況に応じて、私はこのdomainNameのフィールド「真の空白」にしたいです。私は実際のデータベースに対して自分のドメインクラスを検証していないので、ドメインクラスと同期し、実際のテーブルは問題ではありません。

だから、私は(下記のコードは私の想像からである)このような何かをしたい:

if(something){ 
    Domain.constraints.removeAttr('blank') 
} else { 
    Domain.constraints.addAttr('blank', 'true') 
} 

これは可能ですか?

+1

http://stackoverflow.com/questions/4725059/grails-custom-validator-for-domain-class – paislee

答えて

2

あなたはこのような何か行うことができます:

class DomainConstraints { 
    Boolean validateBlankFlag 
    String domainName 
    static transients = [validateBlankFlag] 

    static constraints = { 
    domainName validator : { val,obj -> !val?.equals("") || !obj.validateBlankFlag} 

    } 
} 

それからちょうどあなたが空白値かどうかを許可するかどうかに応じて、ドメインオブジェクトにvalidateBlankFlagを設定します。 DomainConstraintsオブジェクト内の他のプロパティ値に基づいて決定できる場合は、validateBlankFlagプロパティも必要ありません。

+0

@cweston上記のコードは、トランジェントの配列に 'validateBlankFlag'を示しています。 – proflux

関連する問題