Любые учебные пособия по настройке шаблонизатора на GAE (Java)? - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь отформатировать наши электронные письма, используя шаблоны в формате HTML в Google App Engine (используя Java), но я не могу найти достойное руководство по настройке этого.

Я пытался просмотреть StringTemplate , но не могу найти примеров, когда автономный шаблон загружается из контекста сервлета и используется в качестве средства форматирования.

Кто-нибудь может помочь? Я открыт для любых предложений, таких как Velocity или FreeMarker, при условии, что они работают на GAE.

Спасибо

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Понял, как это сделать.

Документация для StringTemplate может быть очень запутанной.Последняя версия (версия 4) имеет классы, отличные от предыдущих версий (ST вместо StringTemplate, STGroup вместо StringTemplateGroup и т. Д.)

Она также имеет внешнюю зависимость от 'antlr', Согласно этим инструкциям (ссылка содержит необходимые ссылки на jar-файлы), поместите jar-файлы 'antlr' и 'SimpleTemplate' в каталог WEB-INF / lib на сервере.

Введенный шаблон версии 2'groups', которые, насколько я могу судить, необходимы для загрузки шаблона из файла на веб-сервере.

Итак, чтобы он заработал, мне нужно было определить файл группы шаблонов со следующимсодержимое с именем emailTemplate.stg

html_format(keyToReplace1, keyToReplace2) ::= <<
<html>
<body>
  <div>
    This is $keyToReplace1$
    <br/>
    This is $keyToReplace2$
  </div>
</body>
</html>
>>

Затем я должен был убедиться, что этот файл доступен моему коду через относительный URL.Это легко проверить, перейдя по URL-адресу в браузере, например, по адресу: localhost: 8888 / templates / emailTemplate.stg

Затем, чтобы использовать этот шаблон, я использовал следующий код:

STGroup g = new STGroupFile("templates/emailTemplate.stg", '$', '$');
ST emailTemplate = g.getInstanceOf("html_format");
emailTemplate.add("keyToReplace1", "value for the first key");
emailTemplate.add("keyToReplace2", "value for the second key");
String result = emailTemplate.render();
0 голосов
/ 10 января 2012

Вы можете загружать шаблоны из пути к классу, как и любой другой поток ввода для использования в StringTemplate.

import org.antlr.stringtemplate.*;
import org.antlr.stringtemplate.language.*;

StringTemplate hello = new StringTemplate("Hello, $name$", DefaultTemplateLexer.class);
hello.setAttribute("name", "World");
System.out.println(hello.toString());

Вы можете посмотреть на JavaDoc, чтобы увидеть, как загрузить файл / ресурс, используя поток ввода, используя Class.getResourceAsString(), файл должен быть на classpath, обычно в default package вашего .war (то есть в корне /lib) с файлами .class.

Считайте ресурс в String и замените первый параметр параметром или используйте один из Stream конструкторов StringTemplate.

Это действительно просто.

...