Avec Spring Boot, le développeur a le choix du moteur de template…
Ajouter dans application.properties :
# Mustache Template engine spring.mustache.prefix=classpath:/templates/ spring.mustache.suffix=.html
{{name}}
Unescape HTML variable :
{{{html}}} ou {{& html}}
1 Block peut permettre d'afficher les membres d'un objet :
{{#element}} <b>{{nom}}</b> {{/element}}
Il peut également permettre de parcourir une collection d'objets :
<ul> {{#elements}} <li>{{nom}} - {{evaluation}}</li> {{/elements}}
Pour les objets null ou les listes vides, on utilise l'inverted section :
{{^elements}} Aucun element ! :( {{/elements}}
Il est possible d'inclure un template dans un autre : inclusion du template partiel header.html situé dans /partials/
{{> /partials/header}}
Par défaut, Mustache n'accepte pas les valeurs nulles sur un membre d'objet (génération d'une exception), il faut donc modifier sa configuration par défaut.
@Configuration public class AppConfig { @Bean public BeanPostProcessor mutacheHackerBeanPostProcessor() { return new BeanPostProcessor() { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (ClassUtils.isAssignable(bean.getClass(), Mustache.Compiler.class) || "mustacheCompiler".equals(beanName)) { Mustache.Compiler compiler = (Mustache.Compiler) bean; return compiler.defaultValue("").nullValue(""); } return bean; } }; } }