我正在我的spring应用程序中准备message(sms)模板。用apache速度比较容易。一个简单的案例(模板+代码)可以这样看:
message.vsl
Dear $lastName $firstName,
Welcome to ServiceXYZ. Your registration with $phoneNumber is being processed.
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脚本合并到我的代码中。如果是这样,我该如何实现?
谢谢!
答案 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());
因此,您可以创建一个类似对象即服务。