在我的Grails应用程序中,需要允许在每个'组织'的基础上向用户显示不同的文本,但如果没有为组织定义覆盖文本,则回退到从messages.properties读取文本
我正在使用类似于详细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 :(得分:0)
事实证明这比我想象的要简单。我不需要修改异步邮件插件,但我确实需要覆盖ValidationTagLib
g:message
实现,以便我可以传入organisationId
。我还需要提供AbstractMessageSource.getMessage
方法的替代实现,这些方法也采用organisationId
参数。