framework-web:spring:templates

Templates

Avec Spring Boot, le développeur a le choix du moteur de template…

Logic-less template !

Ajouter dans application.properties :

# Mustache Template engine
spring.mustache.prefix=classpath:/templates/
spring.mustache.suffix=.html

voir mustache 5 documentation

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;
      }
    };
  }
}

  • framework-web/spring/templates.txt
  • Dernière modification : il y a 8 mois
  • de jcheron