怎样利用模板拼接字符串

本文介绍如何在项目中运用消息模板来简化系统消息的维护。通过举例说明,如‘尊敬的 #username# 您好,您购买的《#bookname#》交易成功!’,阐述了如何在发送消息时替换模板中的变量,如username和bookname,使用Map存储参数并进行替换。涉及的步骤包括查询消息类型表获取模板,以及在controller和服务层的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  近期的项目里在做消息的模块,负责系统内容的各种消息。有些消息的格式是固定的,每次改变的只是用户名等固定的几个字段。为了方便的维护这些消息,我们系统采用消息模板来实现。

  例如:“尊敬的 #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值。然后将获取的值保存到消息记录里。

  业务虽然不是很难,但是通过自己的思考一步一步把它实现,心里特别的开心!


评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值