Beetl 模板

本文详细介绍了Beetl模板引擎的配置项、LP规则、资源加载器、变量使用、函数调用、内置功能以及如何自定义方法、标签、虚拟属性等,帮助开发者全面掌握Beetl的使用。
摘要由CSDN通过智能技术生成

1. 配置项

	#默认配置:
    ##- 配置引擎实现类,默认即可.
    ENGINE=org.beetl.core.engine.FastRuntimeEngine
    ##- 指定了占位符号,默认是${ },也可以指定为其他占位符。
    DELIMITER_PLACEHOLDER_START=${
    DELIMITER_PLACEHOLDER_END=}
    ##- 指定了语句的定界符号,默认是<% %>,也可以指定为其他定界符号
    DELIMITER_STATEMENT_START=<%
    DELIMITER_STATEMENT_END=%>
    ##- 指定IO输出模式,默认是FALSE,即通常的字符输出,在考虑高性能情况下,可以设置成true。详细请参考高级用法
    DIRECT_BYTE_OUTPUT = FALSE
    ##- 指定了支持HTML标签,且符号为#,默认配置下,模板引擎识别<#tag ></#tag>这样的类似html标签,并能调用相应的标签函数或者模板文件。你也可以指定别的符号,如bg: 则识别<bg:
    HTML_TAG_SUPPORT = true
    HTML_TAG_FLAG = #
    ##- 指定如果标签属性有var,则认为是需要绑定变量给模板的标签函数
    HTML_TAG_BINDING_ATTRIBUTE = var
    ##- 指定允许本地Class直接调用
    NATIVE_CALL = TRUE
    ##- 指定模板字符集是UTF-8
    TEMPLATE_CHARSET = UTF-8
    ##- 指定异常的解析类,默认是ConsoleErrorHandler,他将在render发生异常的时候在后台打印出错误信息(System.out)。
    ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler
    ##- 指定了本地Class调用的安全策略
    NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
    ##- 配置了是否进行严格MVC,通常情况下,此处设置为false.
    MVC_STRICT = FALSE

    #资源配置,resource后的属性只限于特定ResourceLoader
    ##- 指定了默认使用的模板资源加载器,注意,在beetl与其他MVC框架集成的时候,模板加载器不一定根据这个配置,比如spring,他的RESOURCE_LOADER以spring的配置为准
    RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
    #classpath 根路径
    ##- 配置了模板资源加载器的一些属性,如设置根路径为/,即Classpath的顶级路径,并且总是检测模板是否更改
    RESOURCE.root= /
    #是否检测文件变化,开发用true合适,但线上要改为false
    RESOURCE.autoCheck= true

    #自定义脚本方法文件的Root目录和后缀
    ##- 配置了自定义的方法所在的目录以及文件名后缀。beetl既支持通过java类定义方法,也支持通过模板文件来定义方法
    RESOURCE.functionRoot = functions
    RESOURCE.functionSuffix = html
    #自定义标签文件Root目录和后缀
    ##- 配置了自定义的html标签所在的目录以及文件名后缀。beetl既支持通过java类定义标签,也支持通过模板文件来定义标签
    RESOURCE.tagRoot = htmltag
    RESOURCE.tagSuffix = tag

    #####  扩展 ##############
    # 内置的方法
    ##- 注册了一个date方法,其实现类是org.beetl.ext.fn.DateFunction
    FN.date = org.beetl.ext.fn.DateFunction
    #......
    #内置的功能包
    ##- 注册了一个方法包strutil,其实现类org.beetl.ext.fn.StringUtil,此类的每个public方法都将注册为beetl的方法
    FNP.strutil = org.beetl.ext.fn.StringUtil
    #......
    #内置的默认格式化函数
    ##- 注册了一个日期格式化函数
    FTC.java.util.Date = org.beetl.ext.format.DateFormat
    #.....
    # 标签类
    ##- 注册了一个include标签函数
    TAG.include= org.beetl.ext.tag.IncludeTag

2. LP (这么奇特的规则,不说怎么知道)

LP.index是Beetl语法 :

  @for(item in menus){
    @if(itemLP.first{
    	 <a lay-href="${item .url}"><i class="layui-icon ${item .icon}"></i>&emsp;<cite>${item.name}</cite></a>
	@}
  @}

itemLP是Beetl隐含定义的变量,能在循环体内使用。其命名规范是item名称后加上LP,他提供了当前循环的信息

#item 根据循环对象 变化比如 如果为 xxx 则 为 xxxLP.index
itemLP.index 	#当前的索引,从1开始
itemLP.size     #集合的长度
itemLP.first    #是否是第一个
itemLP.last     #是否是最后一个
itemLP.even     #索引是否是偶数
itemLP.odd      #索引是否是奇数

3. 模板资源加载器

资源加载器是根据String值获取Resource实例的工场类,同时资源加载器还要负责响应模板引擎询问模板是否变化的调用。对于新手来说,无需考虑模板资源加载器如何实现,只需要根据自己场景选择系统提供的三类模板资源加载器即可

  • 字符串模板加载器
    在创建GroupTemplate过程中,如果传入的是StringTemplateResourceLoader,则允许通过调用gt.getTemplate(String template)来获取模板实例对象

  • 文件资源模板加载器
    模板资源是以文件形式管理的,集中放在某一个文件目录下(如webapp的模板根目录就可能是WEB-INF/template里),因此,可以使用FileResourceLoader来加载模板实例,如下代码:

String root = System.getProperty("user.dir")+File.separator+"template";
FileResourceLoader resourceLoader = new FileResourceLoader(root,"utf-8");
Configuration cfg = Configuration.defaultConfiguration();
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Template t = gt.getTemplate("/s01/hello.txt");
String str = t.render();
System.out.println(str);
  • Classpath资源模板加载器
    模板资源是打包到jar文件或者同Class放在一起,因此,可以使用ClasspathResourceLoader来加载模板实例,如下代码:
ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader("org/beetl/sample/s01/");
Configuration cfg = Configuration.defaultConfiguration();
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Template t = gt.getTemplate("/hello.txt");
String str = t.render();
System.out.println(str);

  • WebApp资源模板加载器
    WebAppResourceLoader 是用于web应用的资源模板加载器,默认根路径是WebRoot目录。也可以通过制定root属性来设置相对于WebRoot的的模板根路径,从安全角考虑,建议放到WEB-INF目录下
Configuration cfg = Configuration.defaultConfiguration();
WebAppResourceLoader resourceLoader = new WebAppResourceLoader();
groupTemplate = new GroupTemplate(resourceLoader, cfg);

WebAppResourceLoader 假定 beetl.jar 是位于 WEB-INF/lib 目录下,因此,可以通过WebAppResourceLoader类的路径来推断出WebRoot路径从而指定模板根路径。所有线上环境一般都是如此,如果是开发环境或者其他环境不符合此假设,你需要调用resourceLoader.setRoot() 来指定模板更路径

  • 自定义资源模板加载器
    有时候模板可能来自文件系统不同目录,或者模板一部分来自某个文件系统,另外一部分来自数据库,还有的情况模板可能是加密混淆的模板,此时需要自定义资源加载,继承ResouceLoader才能实现模板功能

5. 变量定义和使用

<%
/*此处是一个定义临时变量*/
ar a = 3;
var b = 3,c = "abc",d=true,e=null;
var f = [1,2,3];
var g = {
   key1:a,key2:c};
var i = a+b;
%>


template.binding("list",service.getUserList());

//在模板里
<%
for(user in list){
   
%>
hello,${
   user.name};
<% } %>

//共享变量
//共享变量指在所有模板中都可以引用的变量,可通过groupTemplate.setSharedVars(Map sharedVars)传入变量,这些变量能用在 所有模板 的任何一个地方
//.....
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Map<String,Object> shared = new HashMap<String,Object>();
shared.put("name", "beetl");
gt.setSharedVars(shared);
Template t = gt.getTemplate("/org/beetl/sample/s0208/t1.txt");
String str = t.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ynchyong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值