0

私の 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. どんな助けでも大歓迎です。

4

1 に答える 1

0

これは実際、私が思っていたよりも簡単であることがわかりました。非同期メール プラグインを変更する必要はありませんでしたがValidationTagLib g:messageorganisationId. また、引数AbstractMessageSource.getMessageを取るメソッドの代替実装を提供する必要もありました。organisationId

于 2013-11-01T10:35:59.267 に答える