概要
Domainクラスに定義できる制約(validation)でエラーが発生すると以下のようなメッセージが出力されます。
[class jp.co.wave.dsam.Test]クラスのプロパティ[name]の空白は許可されません。
これだとユーザーに全然優しくないので、分かりやすいメッセージに変更する方法を照会します。
検証環境
項目 | 内容 |
OS | Mac OS X 10.06 |
Grails | 2.0.4 |
内容
リファレンスの7.5節に変更する方法が記載されていました。
抜粋します。
If a constraint is violated Grails will by convention look for a message code of the form:
[Class Name].[Property Name].[Constraint Code]
In the case of the blank constraint this would be user.login.blank so you would need a message such as the following in your grails-app/i18n/messages.properties file:
user.login.blank=Your login name must be specified!
The class name is looked for both with and without a package, with the packaged version taking precedence. So for example, com.mycompany.myapp.User.login.blank will be used before user.login.blank. This allows for cases where your domain class message codes clash with a plugin's.
For a reference on what codes are for which constraints refer to the reference guide for each constraint.
Googleで翻訳してみますと、
制約が違反している場合は、Grailsは慣例により、フォームのメッセージコードを探します。
[Class Name].[Property Name].[Constraint Code]
このようなあなたのgrails-app/i18n/messages.propertiesファイルに次のようなメッセージが必要になりますので、空白の制約の場合、これはuser.login.blank次のようになります。
user.login.blank=Your login name must be specified!
クラス名が優先してパッケージ化されたバージョンでは、とと、パッケージなしの両方で検索されます。したがって、たとえば、com.mycompany.myapp.User.login.blankはuser.login.blank前に使用されます。これは、ドメインクラスのメッセージコードは、プラグインのと衝突例が可能になります。
制約は、それぞれの制約のためにリファレンスガイドを参照しているコードが何であるかに参考のため。
これを自分なりに読み解きますと、
validationでエラーが発生すると、
grails-app/i18n/messages.propertiesから、
[Class Name].[Property Name].[Constraint Code]
という形式のメッセージコードを探します。
独自に定義することにより、プラグインで表示するメッセージとと異なるメッセージを出力することができます。
試しにやってみると、追加したメッセージが出力されることを確認しました。
参考情報
・
7 Validation - Reference Documentation
最後に
0 件のコメント:
コメントを投稿