私の Grails アプリケーションでは、「組織」ごとに異なるテキストをユーザーに表示できるようにする必要がありますが、組織に対して上書きテキストが定義されていない場合は、messages.properties からテキストを読み取るようにフォールバックする必要があります。
ここで詳しく説明されているものと同様のアプローチを使用しています。これは http 要求の範囲内でうまく機能しますが、組織ごとに電子メール コンテンツを定義する必要があり、電子メールが非同期で送信されるため (非同期メール プラグイン)。私の現在のresolveCode()
実装は次のようになります。
public MessageFormat resolveCode(String code, Locale locale) {
Message msg = null
try {
Organisation currentOrganisation = currentOrganisationSessionProxy.currentSessionOrganisation
msg = Message.findByCodeAndLocaleAndOrganisation(code, locale, currentOrganisation)
} catch (Exception e) {
//handle exception
}
def format
if (msg) {
format = new MessageFormat(msg.text, msg.locale)
} else {
format = messageBundleMessageSource.resolveCode(code, locale)
}
return format
}
セッション スコープのプロキシを使用して現在の「セッション」組織を解決する必要があるため、DatabaseMessageSource の実装を少し変更しました。
ローカライズされた組織固有の電子メールを非同期で送信するための良いアプローチを提案できる人はいますか? 組織 ID を電子メールと共に永続化し、何らかの方法で my DatabaseMessageSource
. どんな助けでも大歓迎です。