use of freemarker.template.Template in project deeplearning4j by deeplearning4j.
the class StaticPageUtil method renderHTMLContent.
public static String renderHTMLContent(Component... components) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true);
mapper.enable(SerializationFeature.INDENT_OUTPUT);
Configuration cfg = new Configuration(new Version(2, 3, 23));
// Where do we load the templates from:
cfg.setClassForTemplateLoading(StaticPageUtil.class, "");
// Some other recommended settings:
cfg.setIncompatibleImprovements(new Version(2, 3, 23));
cfg.setDefaultEncoding("UTF-8");
cfg.setLocale(Locale.US);
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
ClassPathResource cpr = new ClassPathResource("assets/dl4j-ui.js");
String scriptContents = IOUtils.toString(cpr.getInputStream(), "UTF-8");
Map<String, Object> pageElements = new HashMap<>();
List<ComponentObject> list = new ArrayList<>();
int i = 0;
for (Component c : components) {
list.add(new ComponentObject(String.valueOf(i), mapper.writeValueAsString(c)));
i++;
}
pageElements.put("components", list);
pageElements.put("scriptcontent", scriptContents);
Template template = cfg.getTemplate("staticpage.ftl");
Writer stringWriter = new StringWriter();
template.process(pageElements, stringWriter);
return stringWriter.toString();
}
use of freemarker.template.Template in project ninja by ninjaframework.
the class TemplateEngineFreemarker method invoke.
@Override
public void invoke(Context context, Result result) {
Object object = result.getRenderable();
Map map;
// if the object is null we simply render an empty map...
if (object == null) {
map = Maps.newHashMap();
} else if (object instanceof Map) {
map = (Map) object;
} else {
// We are getting an arbitrary Object and put that into
// the root of freemarker
// If you are rendering something like Results.ok().render(new MyObject())
// Assume MyObject has a public String name field.
// You can then access the fields in the template like that:
// ${myObject.publicField}
String realClassNameLowerCamelCase = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, object.getClass().getSimpleName());
map = Maps.newHashMap();
map.put(realClassNameLowerCamelCase, object);
}
// set language from framework. You can access
// it in the templates as ${lang}
Optional<String> language = lang.getLanguage(context, Optional.of(result));
if (language.isPresent()) {
map.put("lang", language.get());
}
// You can access the values by their key in the cookie
if (!context.getSession().isEmpty()) {
map.put("session", context.getSession().getData());
}
map.put("contextPath", context.getContextPath());
map.put("validation", context.getValidation());
//////////////////////////////////////////////////////////////////////
// A method that renders i18n messages and can also render messages with
// placeholders directly in your template:
// E.g.: ${i18n("mykey", myPlaceholderVariable)}
//////////////////////////////////////////////////////////////////////
map.put("i18n", new TemplateEngineFreemarkerI18nMethod(messages, context, result));
Optional<String> requestLang = lang.getLanguage(context, Optional.of(result));
Locale locale = lang.getLocaleFromStringOrDefault(requestLang);
map.put("prettyTime", new TemplateEngineFreemarkerPrettyTimeMethod(locale));
map.put("reverseRoute", templateEngineFreemarkerReverseRouteMethod);
map.put("assetsAt", templateEngineFreemarkerAssetsAtMethod);
map.put("webJarsAt", templateEngineFreemarkerWebJarsAtMethod);
map.put("authenticityToken", new TemplateEngineFreemarkerAuthenticityTokenDirective(context));
map.put("authenticityForm", new TemplateEngineFreemarkerAuthenticityFormDirective(context));
///////////////////////////////////////////////////////////////////////
// Convenience method to translate possible flash scope keys.
// !!! If you want to set messages with placeholders please do that
// !!! in your controller. We only can set simple messages.
// Eg. A message like "errorMessage=my name is: {0}" => translate in controller and pass directly.
// A message like " errorMessage=An error occurred" => use that as errorMessage.
//
// get keys via ${flash.KEYNAME}
//////////////////////////////////////////////////////////////////////
Map<String, String> translatedFlashCookieMap = Maps.newHashMap();
for (Entry<String, String> entry : context.getFlashScope().getCurrentFlashCookieData().entrySet()) {
String messageValue = null;
Optional<String> messageValueOptional = messages.get(entry.getValue(), context, Optional.of(result));
if (!messageValueOptional.isPresent()) {
messageValue = entry.getValue();
} else {
messageValue = messageValueOptional.get();
}
// new way
translatedFlashCookieMap.put(entry.getKey(), messageValue);
}
// now we can retrieve flash cookie messages via ${flash.MESSAGE_KEY}
map.put("flash", translatedFlashCookieMap);
// Specify the data source where the template files come from.
// Here I set a file directory for it:
String templateName = templateEngineHelper.getTemplateForResult(context.getRoute(), result, this.fileSuffix);
Template freemarkerTemplate = null;
try {
freemarkerTemplate = cfg.getTemplate(templateName);
// Fully buffer the response so in the case of a template error we can
// return the applications 500 error message. Without fully buffering
// we can't guarantee we haven't flushed part of the response to the
// client.
StringWriter buffer = new StringWriter(64 * 1024);
freemarkerTemplate.process(map, buffer);
ResponseStreams responseStreams = context.finalizeHeaders(result);
try (Writer writer = responseStreams.getWriter()) {
writer.write(buffer.toString());
}
} catch (Exception cause) {
// delegate rendering exception handling back to Ninja
throwRenderingException(context, result, cause, templateName);
}
}
use of freemarker.template.Template in project platformlayer by platformlayer.
the class TemplateEngine method runTemplate.
public void runTemplate(String templateName, Map<String, Object> model, Writer writer) throws MojoExecutionException, IOException {
Template template;
try {
template = getTemplate(templateName);
} catch (IOException e) {
throw new MojoExecutionException("Error reading template: " + templateName, e);
}
try {
template.process(model, writer);
} catch (freemarker.template.TemplateException e) {
throw new MojoExecutionException("Error running template: " + templateName, e);
}
writer.flush();
}
use of freemarker.template.Template in project spring-framework by spring-projects.
the class FreeMarkerConfigurerTests method freeMarkerConfigurationFactoryBeanWithNonFileResourceLoaderPath.
@Test
@SuppressWarnings("rawtypes")
public void freeMarkerConfigurationFactoryBeanWithNonFileResourceLoaderPath() throws Exception {
FreeMarkerConfigurationFactoryBean fcfb = new FreeMarkerConfigurationFactoryBean();
fcfb.setTemplateLoaderPath("file:/mydir");
Properties settings = new Properties();
settings.setProperty("localized_lookup", "false");
fcfb.setFreemarkerSettings(settings);
fcfb.setResourceLoader(new ResourceLoader() {
@Override
public Resource getResource(String location) {
if (!("file:/mydir".equals(location) || "file:/mydir/test".equals(location))) {
throw new IllegalArgumentException(location);
}
return new ByteArrayResource("test".getBytes(), "test");
}
@Override
public ClassLoader getClassLoader() {
return getClass().getClassLoader();
}
});
fcfb.afterPropertiesSet();
assertThat(fcfb.getObject(), instanceOf(Configuration.class));
Configuration fc = fcfb.getObject();
Template ft = fc.getTemplate("test");
assertEquals("test", FreeMarkerTemplateUtils.processTemplateIntoString(ft, new HashMap()));
}
use of freemarker.template.Template in project platformlayer by platformlayer.
the class FreemarkerTemplateEngine method runTemplate.
@Override
public void runTemplate(String templateName, Map<String, Object> model, Writer writer) throws TemplateException, IOException {
Template template;
try {
template = getTemplate(templateName);
} catch (IOException e) {
throw new TemplateException("Error reading template: " + templateName, e);
}
try {
template.process(model, writer);
} catch (freemarker.template.TemplateException e) {
throw new TemplateException("Error running template: " + templateName, e);
}
writer.flush();
}
Aggregations