怎么实现动态模板,例如邮件和短信
2016-04-14 来自:毛里球丝 8 人回应

首先,我百度了模板引擎,研究了下NVelocity,

但是还是没有什么好的思路解决实际问题

 

实际问题是这样的

比如说短信

尊敬的xx 先生/女士:

     您在xx 时间,xx 地点,消费了 xx 人名币/美元/等等币种, 出库单号为:xx

网上订单号为xx,将有 xx (韵达) 承运, 等等

 

这样一个短信里,就包含了姓名,消费时间,消费地点,消费币种,出库单号,网上订单号,承运商,运单号等字段,而模板里也许今天是这样的,明天客户就想改成只有出库单号,网上订单号这两个字段内容的短信,动态的数据源和动态的模板内容,如何做呢?

还有邮件,邮件就更头痛了,要在一封邮件里包含支付信息,订单详情,等等查询结果,跟上面一样,显示的内容和获取的数据源都会发生改变,这样的模板功能,应该如何设计或者从哪方面做手做呢?如果用NVelocity来做的话。

 

求各位大神指点了

 

2016-04-24 来自:噗™

呵呵,说白了还是字符串拼装、替换。。

2016-04-23 来自:卜噜

找一个模板引擎 然后再做 我这里推荐

RazorEngine

 

 

2016-04-22 来自:大野丽莎

你可以建一个邮件或者短信模板数据库表 ,然后再后台编写好各种模板,比如注册通知模板,通知订单模板模板的内容可以写成固定动态的比如

尊敬的${userName}先生/女士:

     您在${newTime}时间,${}地点,消费了 ${}人名币/美元/等等币种, 出库单号为:${}

网上订单号为${},将有 ${}(韵达) 承运, 等等

 

通过调用这个模板时把对应的动态数据传过去,

String content = MailUtils.getMailText(map, sysMailTemplate.getContent());//这里面传的参map为动态用户数据,sysMailTemplate为模板内容

 

//通过模板构造邮件内容,将模板中的变量替换成map中的值,注:模板中的变量与map中的key保持一致。       
    public static String getMailText(Map<String, Object> map, String htmlTemplate) {
        String htmlText = htmlTemplate;
        //遍历Map中的所有Key,将得到的value值替换模板字符串中的变量值
        Set<String> keys = map.keySet();
        for (Iterator<String> it = keys.iterator(); it.hasNext();) {
            String key = it.next();
            htmlText = htmlText.replace("${" + key + "}", (String) map.get(key));
        }
        return htmlText;
    }

类似这种办法就可以动态显示邮件的内容,然后获取到内容发邮件或者短信。

2016-04-21 来自:甲甲

Razor引擎解析html就是模板。你可以把Razor拿来用。如果你的模板简单,那就直接使用特定占位符,然后用真实数据来replace。

2016-04-21 来自:柳竹晨

你需要解决两个问题,第一个,如何把模板变成最终内容,就像楼上所说,比如已经做好的XML模板,读取后把相应的占位符给替换了;第二个,动态模板,你得有个模板编辑的功能给用户,提供两个样本,邮件和短信,用户编辑完成后就保存起来,然后执行第一个的解决方案。

2016-04-21 来自:applebanana

顶楼上.你需要Razor引擎.在github里.特别好用.

2016-04-15 来自:Grass

题主不是不知道怎么编程,只是脑袋一下没转过弯来。

自己慢慢想想就能相通了。你都已经知道"模板引擎"。

2016-04-14 来自:天伦

你可以通过XML来配置模板,读取数据后并填充到XML中的节点上即可

您的回应

你还未登陆,不能回应!登陆