怎样利用模板拼接字符串
2015-10-18 10:24
288 查看
近期的项目里在做消息的模块,负责系统内容的各种消息。有些消息的格式是固定的,每次改变的只是用户名等固定的几个字段。为了方便的维护这些消息,我们系统采用消息模板来实现。
例如:“尊敬的 #username# 您好,您购买的《#bookname#》交易成功!”
我们只要维护这个模板即可。那么发消息时,怎么将消息替换成相应的字段呢?对于不同的模板,有多个不同的参数该怎么办?
和消息相关的表有两张,一张是消息类型,一张是消息记录。
首先,我们需要从消息类型表查找到消息的模板,比如购买消息的模板:“尊敬的 #username# 您好,您购买的《#bookname#》交易成功!”
接着,我们可以根据传入的参数对变量进行替换,这里用map存放参数.
controller代码:
service实现:
主要的实现思路:使用map存放变量值,使用迭代器将模板中的变量替换为对应的map值。然后将获取的值保存到消息记录里。
业务虽然不是很难,但是通过自己的思考一步一步把它实现,心里特别的开心!
例如:“尊敬的 #username# 您好,您购买的《#bookname#》交易成功!”
我们只要维护这个模板即可。那么发消息时,怎么将消息替换成相应的字段呢?对于不同的模板,有多个不同的参数该怎么办?
和消息相关的表有两张,一张是消息类型,一张是消息记录。
首先,我们需要从消息类型表查找到消息的模板,比如购买消息的模板:“尊敬的 #username# 您好,您购买的《#bookname#》交易成功!”
接着,我们可以根据传入的参数对变量进行替换,这里用map存放参数.
controller代码:
//参数1.消息模板名称 String messageTypeName="购买"; //参数2.要传入的字段 Map<String,String> map = new HashMap<String,String>(); map.put("username", "张三"); map.put("coursename", "JSP应用开发与实践"); //参数3.接收消息的id String receiveMessageId="UWUi4B6Z93h1nr4NiM19k4"; //参数4.发送消息的id String sendMessageId="UWUi4B6Z93h1nr4NiM19k4";
<span style="white-space:pre"> </span>//方法调用 <span style="white-space:pre"> </span>messageRecordBean.saveMessageRecord(messageTypeName, map, receiveMessageId, sendMessageId);
service实现:
//获取模板内容【查询方法略】 String messageTemplate=messageType.getMessageTemplate(); //获取map集合中的所有键,存入到Set集合中, Set<Map.Entry<String,String>> entry = map.entrySet(); //通过迭代器取出map中的键值关系 Iterator<Map.Entry<String,String>> it = entry.iterator(); while (it.hasNext()) { //将键值关系取出存入Map.Entry这个映射关系集合接口中 Map.Entry<String,String> me = it.next(); //获取键值,进行替换 messageTemplate=messageTemplate.replaceAll("#"+me.getKey()+"#", me.getValue()); } //3.添加到消息实体 MessageRecord messageRecord=new MessageRecord(); messageRecord.setMessageRecordContent(messageTemplate); messageRecord.setMessageTypeId(messageType.getId()); messageRecord.setReceiveMessageId(receiveMessageId); messageRecord.setSendMessageId(sendMessageId); messageRecord.setIsRead(0); //成功返回true,否则返回false try { messageRecordEao.saveGeneric(messageRecord); return true; } catch (Exception e) { e.printStackTrace(); } return false;
主要的实现思路:使用map存放变量值,使用迭代器将模板中的变量替换为对应的map值。然后将获取的值保存到消息记录里。
业务虽然不是很难,但是通过自己的思考一步一步把它实现,心里特别的开心!
相关文章推荐
- 浅析Ruby中继承和消息的相关知识
- Visual C++中MFC消息的分类
- MFC自定义消息的实现方法
- windows消息和消息队列实例详解
- Windows消息传递机制详解
- php获取twitter最新消息的方法
- JavaScript组合拼接字符串的效率对比测试
- javascript中拼接HTML字符串的最快、最好的方法
- WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
- Delphi实现获取句柄并发送消息的方法
- VC自定义消息响应函数postmessage用法示例
- python实现简单socket程序在两台电脑之间传输消息的方法
- Objective-C 消息传递机制详解
- JS实现模拟新浪微博大厅和腾讯微博首页微博消息滚动效果
- IOS消息推送
- Qt 中如何捕获窗口停用和激活的消息
- 消息中间件的定义
- linux消息队列总结
- win32学习----编辑控件的使用