Skip to content

Groovy Markup

Groovy Markup 模板引擎主要用于生成类似 XML 的标记(XML, XHTML, HTML5 等),但也可以用于生成任何基于文本的内容。

配置方式

java
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.groovy();
    }

    @Bean
    public GroovyMarkupConfigurer groovyMarkupConfigurer() {
        GroovyMarkupConfigurer configurer = new GroovyMarkupConfigurer();
        configurer.setResourceLoaderPath("/WEB-INF/templates/");
        return configurer;
    }
}

模板示例

Groovy Markup 不像传统的文本插值模板,它使用 DSL(领域特定语言)的 Builder 语法:

groovy
yieldUnescaped '<!DOCTYPE html>'
html(lang:'en') {
    head {
        meta('http-equiv':'"Content-Type" content="text/html; charset=utf-8"')
        title('我的页面')
    }
    body {
        p('这是一个 HTML 内容示例')
    }
}

补充教学

1. Builder 模式的优势

由于使用的是纯 Groovy 代码,你可以利用所有的编程能力(循环、判断、方法调用)来构建页面,且没有字符串拼接的性能隐患。它非常适合生成结构严谨的 XML 数据。

2. 类型安全

与纯文本模板相比,DSL 语法更容易在开发阶段通过编译器检查出标签未闭合或属性错误。

3. 适用场景

如果你的团队非常熟悉 Groovy,或者正在从传统的 Groovy 框架(如 Grails)转向 Spring MVC,使用 Groovy Markup 会非常得心应手。

Based on Spring Framework.