有意服务中的短信/电子邮件模板操作

问题描述 投票:0回答:1

我正在我的spring应用程序中准备消息(sms)模板。使用apache速度相对容易。一个简单的案例(模板+代码)可以这样看:

message.vsl

    Dear $lastName $firstName,
Welcome to ServiceXYZ. Your registration with $phoneNumber is being processed.

java类(基于https://topriddy.wordpress.com/2012/02/23/how-to-generate-emails-sms-and-other-messages-from-templates-in-java/):

public String getRegistrationMail2(String lastName, String firstName, String phoneNumber) {
       Properties props = new Properties();
       props.put("resource.loader", "class");
       props.put("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");

       VelocityEngine ve = new VelocityEngine();
       ve.init(props);

       Map params = new HashMap();
       params.put("lastName",lastName );
       params.put("firstName", firstName);
       params.put("phoneNumber", phoneNumber);


       Template t = ve.getTemplate("/message.vsl");
       VelocityContext context = new VelocityContext(params);
       StringWriter writer = new StringWriter();
       t.merge(context, writer);
       return writer.toString();
   }

但是,业务需求要求我的模板变得更加复杂。我需要一个蒙面的phoneNumber。此外,上面的类将变得更通用 - 它将是一个服务(让我们称之为模板服务),将由其他服务(客户端)调用。它将获得应放入模板的参数列表。此外,模板将存储在数据库中。

由于我不希望客户在调用我的服务之前屏蔽手机,如何在模板服务端实现屏蔽?我猜我需要在代码中加入一些VTL脚本。如果是这样的话我该如何实现呢?

谢谢 !

java spring velocity
1个回答
0
投票

我不确定这个问题,但我认为您可以研究可提供某些格式的DateTool。这是样本:

context.add("date", new DateTool());

这是模板中的代码:

$date.format('EEE, MMM d, yyyy at ha', $myDate)

因此,您可以创建一个类似的服务对象。

© www.soinside.com 2019 - 2024. All rights reserved.