2013-10-31 42 views
0

在我的Grails應用程序中,需要允許在每個「組織」的基礎上向用戶顯示不同的文本,但如果不覆蓋,則會退回到從messages.properties中讀取文本文本是爲組織定義的。具有DatabaseMessageSource的Grails異步郵件插件

我正在使用類似於詳細的here的方法,該方法在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與電子郵件,然後檢索一些如何在我的DatabaseMessageSource。任何幫助表示讚賞。

回答

0

這實際上證明比我想象的要簡單。我不需要修改異步郵件插件,但我確實需要覆蓋實現,以便我可以傳遞organisationId。我還需要提供AbstractMessageSource.getMessage方法的替代實現,該方法也採用了organisationId參數。