故意服务中的短信/电子邮件模板处理

时间:2019-03-28 07:44:47

标签: java spring velocity

我正在我的spring应用程序中准备message(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脚本合并到我的代码中。如果是这样,我该如何实现?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

async function myMethod() {
  console.log('In async method');
  nonasyncmethod();
}

function nonasyncmethod() {
  console.log('In non-async method');
}

myMethod();

这是模板中的代码:

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

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