グレイルでは、
特定の「一意」の制約に違反した場合に発生する例外のメッセージを設定したい。
それは可能ですか?
各制約に使用するメッセージ コードは、その制約のリファレンス ページ (例: http://grails.org/doc/latest/ref/Constraints/unique.html ) にリストされています。それから、必要なコードは
com.project.ModelName.fieldName.unique=blah
com.project.ModelName.fileName を適切な値に置き換える必要があります
http://grails.1312388.n4.nabble.com/Custom-error-message-in-message-properties-td3335696.htmlに感謝します
与えられた答えを更新するだけで、上記とドキュメントでさえ示唆しているようです:
この制約は、スキーマの生成に影響します。
エラー コード: className.propertyName.unique
しかし、これは私のアプリの場合には当てはまりませんでした。grails 3 で状況が変わったのかもしれません。面倒なバリエーションを試してみましたが、成功せず、デフォルト値が返されました。
これに直面している他の人のための解決策は、本当に簡単です。
応答を返す既定のエントリを見つけます。
私の場合、2 つのエントリがありました。
##default.not.unique.message=Property [{0}] of class [{1}] with value [{2}] must be unique
##default.not.unique.message={0} must be unique
行の先頭にハッシュを追加して両方をコメントアウトし、レコードを再度保存しようとしました。今回は、Web インターフェースで、デフォルトの grails メッセージではなく、実際のフィールド名が表示されました。
unique.com.xxx.users.PhotosBean.imageSHa
そして、messages.properties にこのキーのエントリを追加して、すべてがうまく機能していることを確認しました。
また、実際のクラスではなくサブクラスにぶら下がっていたことにも注意してください。私の場合は、複雑すぎたのかもしれません。
このような状況での秘訣は、値を返すデフォルト エントリをコメント アウトし、実際の制約が返されたときに再度有効にすることです。