[[mvc-view-groovymarkup]] = Groovy Markup The https://groovy-lang.org/templating.html#_the_markuptemplateengine[Groovy Markup Template Engine] is primarily aimed at generating XML-like markup (XML, XHTML, HTML5, and others), but you can use it to generate any text-based content. The Spring Framework has a built-in integration for using Spring MVC with Groovy Markup. NOTE: The Groovy Markup Template engine requires Groovy 2.3.1+. [[mvc-view-groovymarkup-configuration]] == Configuration The following example shows how to configure the Groovy Markup Template Engine: [source,java,indent=0,subs="verbatim,quotes",role="primary"] .Java ---- @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.groovy(); } // Configure the Groovy Markup Template Engine... @Bean public GroovyMarkupConfigurer groovyMarkupConfigurer() { GroovyMarkupConfigurer configurer = new GroovyMarkupConfigurer(); configurer.setResourceLoaderPath("/WEB-INF/"); return configurer; } } ---- [source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"] .Kotlin ---- @Configuration @EnableWebMvc class WebConfig : WebMvcConfigurer { override fun configureViewResolvers(registry: ViewResolverRegistry) { registry.groovy() } // Configure the Groovy Markup Template Engine... @Bean fun groovyMarkupConfigurer() = GroovyMarkupConfigurer().apply { resourceLoaderPath = "/WEB-INF/" } } ---- The following example shows how to configure the same in XML: [source,xml,indent=0,subs="verbatim,quotes"] ---- ---- [[mvc-view-groovymarkup-example]] == Example Unlike traditional template engines, Groovy Markup relies on a DSL that uses a builder syntax. The following example shows a sample template for an HTML page: [source,groovy,indent=0,subs="verbatim,quotes"] ---- yieldUnescaped '' html(lang:'en') { head { meta('http-equiv':'"Content-Type" content="text/html; charset=utf-8"') title('My page') } body { p('This is an example of HTML contents') } } ----