Grails の Validation で 自作Constraints を使う(Github経由)

(※ この記事ではGrails 2.3.6を使用しています。)

 

以下の3ステップで自作した制約(Constraint)をGrailsのバリデーションで使用できるようになります。

  1. プラグイン・プロジェクトで制約を定義したクラスを作成する
  2. GithubMavenレポジトリを作成し、作成したプラグインを配信可能にする
  3. Grailsアプリで作成したプラグインの読み込み設定をする

 

今回はサンプルとして、日付文字列の正当性チェックを行う制約を作成しました。
サンプルはGithubにて公開しています。[ my-validation-plugin ]

 

1. プラグイン・プロジェクトで制約を定義したクラスを作成する

Grailsはアプリケーション起動時に制約クラスを読み込みます。
プラグイン・プロジェクトにはアプリケーション起動時に、任意の処理を読み込ませる仕組みが用意されています。

f:id:onBass_naga:20140227224946p:plain

選択している部分が今回のメインとなるソースです。
が、説明は省略します。めんどい

 

下記のサイトが非常に参考になります。


しおしおの雑記帳
Grailsでカスタムバリデーションを作ってみた
http://siosio.hatenablog.com/entry/2012/07/07/135942


 

Tips

 

2. GithubMavenレポジトリを作成し、作成したプラグインを配信可能にする

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
}

 以上です。

 

(記事編集中にブラウザがクラッシュすると、やる気がなくなりますね〜。)