Я хотел бы иметь выход шаблона freemarker в String. У меня есть файл шаблона freemarker commonTemplate.ftl.Напишите шаблон freemarker для вывода строки
<div>
<div>
<h1>${userDetails.name}</h1>
${userDetails.birthday} ${userDetails.id}
</div>
</div>
и Java код, который населяет модель и печатает вывод на консоль App.java.
public class App {
private Service service = new Service();
public void execute() {
Configuration configuration = prepareConfiguration();
// Load templates from resources/templatess.
configuration.setClassForTemplateLoading(App.class, "/templates");
try {
Template template = configuration.getTemplate("commonTemplate.ftl");
// Console output
Writer out = new OutputStreamWriter(System.out);
template.process(prepareData(), out);
out.flush();
} catch (IOException | TemplateException e) {
throw new RuntimeException(e);
}
}
private Configuration prepareConfiguration() {
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
configuration.setDefaultEncoding("UTF-8");
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
configuration.setLogTemplateExceptions(false);
return configuration;
}
private Map<String, Object> prepareData() {
Model model = service.getModel();
Map<String, Object> data = new HashMap<String, Object>();
data.put("userDetails", model.getUserDetails());
return data;
}
}
Он работает для вывода на консоль.
<div>
<div>
<h1>john Doe</h1>
1990-01-10T12:11+01:00[Europe/Prague] 1
</div>
</div>
Да, это работает, спасибо. –
Что делать, если данные содержат специальные символы, которые нуждаются в кодировке UTF-8? В этом случае результат будет содержать '?' персонажи. Как мы можем решить эту проблему? – Aman