Я готовлю шаблоны сообщений (смс) в моей весенней заявке. Это относительно легко сделать со скоростью 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();
}
Однако бизнес-потребности требуют, чтобы мои шаблоны стали более сложными. Мне нужно иметь номер телефона в маске. Более того, вышеприведенный класс станет более общим - это будет сервис (назовем его сервисом шаблонов), который будет вызываться другими сервисами (клиентами). И он получит список параметров, которые должны быть размещены в шаблонах. Более того, шаблоны будут храниться в базе данных.
Поскольку я не хочу, чтобы клиенты маскировали телефон перед вызовом моей службы, как можно добиться маскировки на стороне службы шаблонов?
Я предполагаю, что мне нужно включить некоторые скрипты VTL в мой код. Если это так, как я могу этого достичь?
спасибо!