Beetl是什么?

Beetl是一款国产模板引擎,据说渲染速度是JSP的2倍,FreeMaker的6倍,Thymeleaf的???倍?但是为什么官方API我看的不是很懂- -!反正不管怎样,先玩玩再看
官网 传送门

依赖

<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl-framework-starter</artifactId>
    <version>1.1.41.RELEASE</version>
</dependency>

starter 自动处理以btl结尾的视图,模板根目录是Spring Boot默认的templates目录。如下配置可以修改beetl部分属性

配置Config

@Configuration
public class BeetlConf {

    @Bean(initMethod = "init", name = "beetlConfig")
    public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
        BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
        ResourcePatternResolver patternResolver = ResourcePatternUtils
                .getResourcePatternResolver(new DefaultResourceLoader());
        try {
            WebAppResourceLoader cploder = new WebAppResourceLoader(patternResolver.getResource("/templates").getFile().getPath());
            beetlGroupUtilConfiguration.setResourceLoader(cploder);
            return beetlGroupUtilConfiguration;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }

    @Bean(name = "beetlViewResolver")
    public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
        BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
        beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
        beetlSpringViewResolver.setPrefix("/");
        beetlSpringViewResolver.setSuffix(".html");
        beetlSpringViewResolver.setOrder(0);
        beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
        return beetlSpringViewResolver;
    }

}

application.yml中配置模板根目录和禁用BeetlSQL

RESOURCE:
  root: /WEB-INF/templates

beetlsql:
  enabled: false

基本用法

  • 界定符和占位符
    使用<% %>作为界定符,如直接输出后台传过来的数据即为<% user.name %>
    占位符和其它模板一样${}
  • 安全输出(非空判断)
    个人感觉非常好用的安全输出,只需在输出变量时加个感叹号即可,如果目标为空即不输出,而不是报错 ${ basePath! }
  • 简单的循环
<select name="categoryId" id="categoryId" lay-filter="category" lay-search>
	<option value="">图书分类</option>
		<% for(category in bookCategory){ %>
			<option value=${category.id}>${category.name}</option>
		<% } %>
</select>
  • if-else判断
<%
var a =true;
var b = 1;
if(a&&b==1){
}else if(a){
}else{
}
%>