Spring Boot and Mustache – default value - LearnHowToCode SarkariResult.com Interview Questions and Answers LearnHowToCodeOnline
Java Spring Framework

Spring Boot and Mustache – default value

In Spring Boot + Mustache template environment, if we didn’t assign a value to a {{variable}} on the Mustache’s page, the jmustache will throws the following error messages :
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

If the variable is optional, try to wrap like this:
{{#variable}}
{{.}}
{{/variable}}
Solution 2
Alternatively, in Spring Boot, override the Mustache.Compiler to provide a default value globally:
SpringBootWebApplication.java
package com.mycareerrepublic.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.mycareerrepublic"})
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;

}

}

About Mariano

I'm Ethan Mariano a software engineer by profession and reader/writter by passion.I have good understanding and knowledge of AngularJS, Database, javascript, web development, digital marketing and exploring other technologies related to Software development.

0 comments:

Featured post

Political Full Forms List

Acronym Full Form MLA Member of Legislative Assembly RSS Really Simple Syndication, Rashtriya Swayamsevak Sangh UNESCO United Nations E...

Powered by Blogger.