Grails の Validation で 自作Constraints を使う(Github経由)
(※ この記事ではGrails 2.3.6を使用しています。)
以下の3ステップで自作した制約(Constraint)をGrailsのバリデーションで使用できるようになります。
今回はサンプルとして、日付文字列の正当性チェックを行う制約を作成しました。
サンプルはGithubにて公開しています。[ my-validation-plugin ]
1. プラグイン・プロジェクトで制約を定義したクラスを作成する
Grailsはアプリケーション起動時に制約クラスを読み込みます。
プラグイン・プロジェクトにはアプリケーション起動時に、任意の処理を読み込ませる仕組みが用意されています。
選択している部分が今回のメインとなるソースです。
が、説明は省略します。めんどい
下記のサイトが非常に参考になります。
しおしおの雑記帳
Grailsでカスタムバリデーションを作ってみた
http://siosio.hatenablog.com/entry/2012/07/07/135942
Tips
- 制約クラスはsrcフォルダの下に配備するのがお作法みたいです。
- org.codehaus.groovy.grails.validation.AbstractConstraint を継承します。
- 実装についてはGrails標準の制約クラスが参考になります。
https://github.com/grails/grails-core/tree/master/grails-core/src/main/groovy/org/codehaus/groovy/grails/validation
2. GithubにMavenレポジトリを作成し、作成したプラグインを配信可能にする
Githubに配信用リポジトリを用意した後、ローカルにアップロード用のリポジトリを作成します。
下記のサイトが非常に参考になります。
bluepapa32’s Java Blog
GitHub を Maven 公開リポジトリにする (Gradle 編)
Literal Ice:
GrailsのプラグインリポジトリとしてGithubを使う
なお、私はMacにて以下の設定をしました。
settings.groovy
ls.release.scm.enabled = false
grails.project.repos.default = "localRelease"
grails.project.repos.localRelease.url = "file:///Users/username/repos/mvn/"
3. Grailsアプリで作成したプラグインの読み込み設定をする
以下の設定を追加すればOKです。
BuildConfig.groovy
repositories {
mavenRepo "http://onbass-naga.github.io/mvn/"
} plugins {
compile "com.example:my-validation-plugin:0.1"
}
使い方
static constraints = { deadline date:true }
以上です。
(記事編集中にブラウザがクラッシュすると、やる気がなくなりますね〜。)