манипулирование шаблоном смс / электронной почты в преднамеренном сервисе - PullRequest
0 голосов
/ 28 марта 2019

Я готовлю шаблоны сообщений (смс) в моей весенней заявке. Это относительно легко сделать со скоростью 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 в мой код. Если это так, как я могу этого достичь?

спасибо!

1 Ответ

0 голосов
/ 28 марта 2019

Я не уверен, вопрос, но я думаю, что вы можете исследовать DateTool, который может предоставить некоторые форматы. Вот образец:

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

вот код в шаблоне:

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

Таким образом, вы можете создать похожий объект, который является службой.

...