Spring Boot et Moustache - valeur par défaut
Dans l'environnement de modèle deSpring
Boot + Mustache, si nous n'avons pas attribué de valeur à un{{variable}} sur la page de Moustache, lejmustache affichera les messages d'erreur suivants:
com.samskivert.mustache.MustacheException$Context: No method or field with name 'variable' on line xx
at com.samskivert.mustache.Template.checkForMissing(Template.java:316) ~[jmustache-1.13.jar:na]
at com.samskivert.mustache.Template.getValue(Template.java:224) ~[jmustache-1.13.jar:na]
at com.samskivert.mustache.Template.getValueOrDefault(Template.java:269) ~[jmustache-1.13.jar:na]
P.S Tested with Spring Boot 1.5.2.RELEASE
Solution 1
Si la variable est facultative, essayez d'envelopper comme ceci:
{{#variable}}
{{.}}
{{/variable}}
Solution 2
Sinon, dans Spring Boot, remplacez lesMustache.Compiler pour fournir une valeur par défaut globalement:
SpringBootWebApplication.java
package com.hostingcompass.web;
import com.samskivert.mustache.Mustache;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mustache.MustacheEnvironmentCollector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.Environment;
@SpringBootApplication
@ComponentScan({"com.example"})
public class SpringBootWebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootWebApplication.class, args);
}
//Override MustacheAutoConfiguration to support defaultValue("")
@Bean
public Mustache.Compiler mustacheCompiler(Mustache.TemplateLoader mustacheTemplateLoader,
Environment environment) {
MustacheEnvironmentCollector collector = new MustacheEnvironmentCollector();
collector.setEnvironment(environment);
// default value
Mustache.Compiler compiler = Mustache.compiler().defaultValue("")
.withLoader(mustacheTemplateLoader)
.withCollector(collector);
return compiler;
}
}