我正在我的spring应用程序中准备消息(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脚本。如果是这样的话我该如何实现呢?
谢谢 !
我不确定这个问题,但我认为您可以研究可提供某些格式的DateTool。这是样本:
context.add("date", new DateTool());
这是模板中的代码:
$date.format('EEE, MMM d, yyyy at ha', $myDate)
因此,您可以创建一个类似的服务对象。