Templates
Avec Spring Boot, le développeur a le choix du moteur de template…
Mustache
Intégration
Ajouter dans application.properties :
# Mustache Template engine spring.mustache.prefix=classpath:/templates/ spring.mustache.suffix=.html
Bases
Variable
{{name}}
Unescape HTML variable :
{{{html}}} ou {{& html}}
Blocks
Objet
1 Block peut permettre d'afficher les membres d'un objet :
{{#element}}
<b>{{nom}}</b>
{{/element}}
Collections
Il peut également permettre de parcourir une collection d'objets :
<ul>
{{#elements}}
<li>{{nom}} - {{evaluation}}</li>
{{/elements}}
Blocks vides
Pour les objets null ou les listes vides, on utilise l'inverted section :
{{^elements}}
Aucun element ! :(
{{/elements}}
Vues partielles
Il est possible d'inclure un template dans un autre : inclusion du template partiel header.html situé dans /partials/
{{> /partials/header}}
Valeurs nulles
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;
}
};
}
}
