欢迎进入Wiki » FAQ » 消息模板开发说明?

消息模板开发说明?

在2015-06-30 15:15上被李小翔修改
评论 (0) · 附件 (1) · 记录 · 信息

供稿人:刘少林

项目中会有这样的需求,按照固定的格式输出一些信息,比如发送一条短信 “尊敬的用户你好,xxx给你发来一封邮件请登录查看.....”,这句提示信息中,会变化的只有“XXX”(发件人),其他的文字都是不变的。

通常,我们会写一个方法,把“XXX”当成一个参数传过来,并返回拼接好的文字,挺方便也容易理解,但是有个问题,如果文字有变动的话,每次都要手动去改相关的代码。

此时,可以使用“消息模板”功能进行开发,如果模板发生变化,可以由管理员直接在后台维护,并且支持国际化。

创建消息模板

有两种方式创建消息模板,一种是使用管理员登录到后台,在“数据字典/其他/消息模板”中新建消息模板,如下图所示,关键信息包括:

  • 模板代码:用于在程序中调用的模板代码,必须唯一。
    可以添加 i18n 后缀以支持国际化,比如消息 FOOBAR,可以分别定义 FOOBAR_zh_CN、FOOBAR_en_US 中、英文模板
  • 是否是HTML:通过API拼装消息时,原样返回的标记
  • 标题:消息标题(如果有的话,如邮件)
  • 内容:消息正文
    其中,标题和内容模板支持命名参数或顺序参数,如图例中的 {title} 使用的就是命名参数,还可以使用类似 “待办提醒:{0}” 的传参模式(和 i18n 下的 properties 文件类似),通过不同的 API 调用时,会自动将这些参数替换成实际的值。

消息模板.png

另外一种维护方式是在工程启动时(如 BootStrap)调用API自动创建,如下例所示:

import bropen.framework.plugins.message.MessageTemplateService

class BootStrap {
    MessageTemplateService messageTemplateServices
   ....
    messageTemplateService.createTemplateIfNotExists("MESSAGE_TEST_CODE", "消息模块test", null, "尊敬的用户你好,{name}给你发来一封邮件请登录查看.....", false)
   ....

}

messageTemplateService.createTemplateIfNotExists 详细参数说明请参考 API 手册。

根据模板生成消息

通过 MessageTemplateService.getMessage 来生成消息,返回值是一个 Map,如 [title: "标题", body: “内容(正文)”, isHTML: ture/false]

assert messageTemplateService.getMessage("MESSAGE_TEST_CODE", [name: "张三"]) == "尊敬的用户你好,张三给你发来一封邮件请登录查看....."

由于上面的示例定义的是命名参数,因此这里调用的是以 Map 为参数的 getMessage 版本,此外,还有以列表为参数的版本,详细参考 API 手册。

标签: BroFramework
在2015-06-30 15:13上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号