バックグラウンド
データベース内で国際化されたフィールドのラベルを持つレガシーデータベースを移行しています。私たちは今でもmessages.properties
cssクラス(名前)のようないくつかの静的リソースにを使用しています。テーブルは次のようになります。
ITEMS
-------------------------------------------
code number(3) not null PK
language_code number(3) not null PK
label varchar2(90) not null
hint varchar2(250) not null
help varchar2(4000)
label_client varchar2(90) not null
hint_client varchar2(250) not null
help_client varchar2(4000)
htmlコンポーネントの場合、このテーブルでアイテムを探し、ラベル(カスタムTagLib)を設定するだけで、これはうまく機能します。クライアントにいくつかのラベル(* _clientフィールド)を変更する機会も与えることに注意してください。
問題
デフォルトでは、Grailsは.label
検証エラーメッセージで使用するサフィックスが付いたmessages.propertiesを調べようとします。例(Person.name.label=name
):
Property name must not be blank.
データベース内のアイテムにNameofPersonというラベルが付いている場合、検証では、入力のラベルが異なるため、これは一貫性がありません。
クライアントがアイテムを変更できるため、アイテムを.propertiesと同期することはできません。したがって、解決策は、どういうわけか、Grails検証メッセージを変更してデータベースのコンテンツを返すことです。
これは可能ですか?検証メッセージのためだけに、プロパティではなくデータベースから取得するにはどうすればよいですか?