2016-12-10 17 views
0

Grails 2.3.7プロジェクトをGrails 3.2.3にアップグレードしようとしています。 2.3.7では、私は、カスタム制約を使用し、使用して/conf/Config.groovyに登録:Grailsの3.2で、カスタム制約を登録する

static constraints = { 
    approvedDate(description: '>= applyDate') 
} 

しかし:

org.codehaus.groovy.grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint) 

は、それから私は、ドメイン内でこのようなものを使用することができます0.3、私はエラー以下しまっ/conf/application.groovyにコマンドの上に置く(とパッケージ名からorg.codehaus.groovy削除)する場合:

Error occurred running Grails CLI: No signature of method: groovy.util.ConfigObject.registerNewConstraint() is applicable for argument types: (groovy.util.ConfigObject, groovy.util.ConfigObject) values: [[:], [DESCRIPTION_CONSTRAINT:[:]]] 

私は予告バリデーションクラスが多少変更されたことGrails 3しかし、usin Grailsの妥当性検証のg制約クラスも同じエラーを受けました。

私が見つけたすべてのバリデーションプラグインは、Grails 3よりもずっと前に放棄されていました。そして、Grails 3.2で新しい制約を登録するためのドキュメントは見つかりませんでした。

+0

はこれを試してみてください。 registerNewConstraint( 'description'、my.validation.DescriptionConstraint.class) ' [DOC](http://docs.grails.org/3.1.x/api/grails/validation/ConstrainedProperty.html#registerNewConstraint) – zfChaos

+0

@zfChaosありがとう。しかし、それはまだ同じエラーを持っています。さらに、 'import grails.validation.ConstrainedProperty'は' class grails.validation.ConstrainedProperty'を解決できません。このファイルはまだGrails環境にはないようです。代わりに '/ grails-app/init/Application.groovy'に登録しようとしています。そこには誤りはありません。しかし、私はプロジェクトの他の部分を移植しているので、まだ動作しているかどうかはテストできません。 – Meam

答えて

1

/grails-app/init/BootStrap.groovyのConstrainedProperty.registerNewConstraintを呼び出します。 (Grails 3.2.4でテスト済み)

class BootStrap { 
    def init = { servletContext -> 
    grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint) 
    // The rest of bootstrap code 
    } 
} 

注意してください。以前は、/grails-app/init/Application.groovyのmain()から呼び出していました。実行中のアプリケーションで動作します。ただし、統合テストでは機能しません。

0

あなたはconfigruntime.groovyを作成して、Grailsの2.xxののようruntime.groovyであなたの制約を登録することができます別の方法は: `org.codehaus.groovy.grails.validation.ConstrainedProperty:

org.codehaus.groovy.grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint) 
関連する問題