文件名称:
Beetl2.7.14中文文档.pdf
开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-07-21
详细说明:Beetl目前版本是2.7.14,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板
容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。kartifactId>beetl
2.7.14
如果非maven工程,直接下载http://git.oschina.net/xiandafu/beetl2.0/attach_files
22.从 Group Template开始
StringTemplateResourceLoader resourceloader new StringTemplateResourceLoader(;
Configuration cfg= Configuration. defaultConfiguration (
GroupTemplate gt new GroupTemplate (resourceLoader, cfg);
Template t= gt. getTemplate( "hello, siname")
tbinding("name","beet");
String str = t render
System. out. printin(str);
Bet的核心是 GroupTemplate,创建 Groupτ emplate需要俩个参数,一个是模板资源加载器,一个是配
置类,模板资源加载器Bet内置了6种,分别是
■ Stringτ emplate ResourceLoader:字符申模板加载器,用于加载字符申模板,如本例所示
· FileResourceloader:文件模板加载器,需要一个根目录作为参数构造,传入 getTemplate方法的
String是模板文什相对于Root目录的相对路径
Classpath ResourceLoader:文件模板加载器,模板文件位于 Classpath里
WebAppResourceloader:用 webapp集成,假定模板根目录就是 Webroot录,参考web集成章
MapResourceLoader:可以动态存入模板
CompositeResourceLoader混合使用多种加载方式
代码第5行将变量name传入模板里,其值是"Be;"。代码第6行是渲染模板,得到输出, template提供
了多种获得渲染输出的方法,如下
tempate render0返回渲染结果,如本例所示
template. renderTo(Writer)渲染结果输出到 Writer甲
template. renderTo( Outputstream)渲染结果输出到 Outputstream里
1.关于如何使用模板资源加载器,请参考下一节
2.如何对模板进行配置,请参考下一节
2.3.模板基础配置
Beet!提倛不但功能齐全,而且还有很多独特功能,通过简单的配置文件,就可以定义众多的功能,默认
情况下, Configuration类总是会先加载默认的配置文件(位于/org/beet/core/ beetl- default; properties
作为新手,通常只需要关注3,4,5,6行定界符的配置,以及12行模板字符集的配置就可以了,其他
配置会在后面章节陆续提到)下,其内容片断如下
#默认配置
ENGINE=org. beetl core engine. FastRuntime Engine
DELIMITER PLACEHOLDER START=st
DELIMITER PLACEHOLDER END=I
DELIMITER STATEMENT START=<%
DELIM工 TER STATEMENT END=‰
DIRECT BYTE OUTPUT FALSE
HTML TAG SUPPORT true
HTML TAG FLAG =
HTML TAG BINDING ATTRIBUTE var
NATIVE CALL= TRUE
TEMPLATE CHARSET UTF-8
ERROR HANDLER org beetl core. ConsoleErrorHandler
NATIVE SECUARTY_ MANAGER= org. beetl core. DefaultNativeSecurityManager
MVC STRICT FALSE
#资源配置, resource后的属性只限于特定 Resourceloader
RESOURCE_ LOADER=org. beetl core resource. ClasspathResourceLoader
#C1 asspath根路径
RESOURCE. root=/
#是否检测文件变化,开发用true合适,但线上要改为 false
RESOURCe autocheck= true
#自定义脚本方法文件的Root目录和后缀
RESOURCE functionroot functions
RESOURCE functionsuffix html
#自定义标签文件Root目录和后缀
RESOURCE. tagRoot htmltag
RESOURCE. tagSuffix tag
####扩展排#############
##内置的方法
FN. date org beetl ext fn. DateFunction
##内置的功能包
FNP. strutil org beetl ext fn. Stringutil
##内置的默认格式化函数
FTC. javautil. Date =org. beetl ext format Date Format
##标签类
TAGinclude= org. beetlext tag. Includetag
第2行配置引擎实现类,默认即可.
第3,4行指定了占位符号,默认是${},也可以指定为其他占位符
第5,6行指定了语句的定界符号,默认是<%%>,也可以指定为其他定界符号
第7行指定Io输岀模式,默认是FASE,即通常的字符输岀,在考虑高性能情况下,可以设置成true。详
细请参考高级用法
第8,9行指定了支持 HTML标签,且符号为#默认配置下,模板引擎识别≮#tag〉#tag>这样的类似
htm标签,并能调用相应的标签函数或者模板文件。你也可以指定别的符号,如bg:则识别,则在 beetl. properties加入一行即可并将此配置文
件放入 Classpath根目录下即可。 Configuration. default Configuration(总是先加载系统默认的,然
后再加载 Beetl properties的配置属性,如果有重复,用后者代替前者的配置
#自定义配置
DELIMITER STATEMENT STARTE< I
DELIMITER STATEMENT END=-->
24.0新功能 beetl支持通过模板本生来完成函数,即模板函数,或者通过模板来实现HTML标签
(而不用写java代码),可以 beetlproperties为这种应用设置的不同的语句定界符来跟常规模板做
区分,如下
FUNCTION TAG LIMITER=<%:%>
分号分割开,如果配置文件没有 FUNCTION TAG LIMITER=,则模板函数,htm标签使用
FDELIMITER STATEMENT START, DELIMITER STATEMENT END
2.4.模板资源加载器
资源加载器是根据 String值获取Rε source实例的工场类,同时资源加载器还要奂责响应模板引擎询冋模
板是否变化的调用。对于新手来说,无需考虑模板资源加载器如何实现,只需要根据自己场景选择系统
提供的三类模板资源加载器即可
24.L.宁符串模板加载器
在创建 GroupTemplate过程中,如果传入的是 StringTemplateResourceLoader,则允许通过调用
gt. getTemplate( String template)来获取模板实例对象,如2.1所示
2.4.2.文件资源模板加载器
更通常情况下,模板资源是以文件形式管理的,集中放在某一个文件目录下(如 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 Group Template(resourceLoader, cfg;
Template t= gt. getTemplate(" /s01/hello. txt");
String str =t render()
System. out. println(str);
第1行代码指定了模板根目录,即位于项目工程下的 Itemplate目录第2行构造了个资源加载器,并指
定宇符集为UTF-8(可不指定,因为配置文件默认就是∪IF-8);第5行通过模板的相对路径/s01/ hello, txt
来加载模板
24.3. Classpath资源模板加我器
还冇种常情况下,模板资源是打包到jar文件或者同Clas放在一起,因此,可以使用
ClasspathResourceLoader米加载模板实例,如下代码
ClasspathResourceLoader resourceLoader new ClasspathResourceLoader("org/beetl/sample/si
Configuration cfg Configuration defaultConfiguration (;
GroupTemplate gt new GroupTemplate (resourceloader, cfg);
Template t gt getTemplate( /hello.txt);
String str =t render(;
System. out. println(str);
第1行代码指定了模板根目录,即搜索模板的时候从根目录开始,如果neM
ClasspathResourceLoader( template/),则表示搜索 template下的模板。此处用空构造函数,表示搜索路
径是根路径,且字符集默认字符集UTF-8.
第4行通过模板的相对路径rg/ beetl/sample/s01/helo.txt米加载模板
24.4. WebApp资源模板加载器
WebAppResourceLoader是用于wveb应用的资源模板加载器,默认根路径是WebR。ot目录。也可以通过
制定root属性米设置相对于 Webroot的的模板根路径,从安全角考虑,建议放到WEB-INF目录下
如下是 Final集成里初始化 GroupTemplate的方法
Configuration cfg= Configuration. defaultConfiguration(;
WebAppResourceLoader resourceLoader = new WebAppResourceLoader(
groupTemplate new GroupTemplate (resourceLoader, cfg)
WebAppResourceloader假定 beetl. jar是位于WEB-NF/ib目录下,因此,可以通过
WebAppResourceLoader类的路径来推断岀 Ebroαt路径从而指定模板根路径。所有线上环境般
都是如此,如果是开发环境或者其他环境不符合此假设,你需要调用 resourceloader. setroot0米
指定模板更路径
2.45.自定义资源模板加载器
有吋候模板可能来自文件系统不同目录,或者模板·部分来自某个文件系统,另外·部分来自数据库,
还有的情况模板可能是加密混淆的模板,此时需要自定义资源加载,继承 Resouceρader才能实现模板
功能,这部分请参考高级部分
25.定界符与占位符号
Bet模板语言类似丿S语言和习俗,只需要将Beet|语言放入定界符号里即可,如默认的是<%%>,占位符
用于静态文本里嵌入占位符用于输出,如下是正确例子
<
a=2
var b=3:
var result a+b:
hello 2+3=result
千万不要在定界符里使用占位符号,因为占位符仅仅嵌在静态文本里,如下例子是借误例子
var a =hi
varc=${a}+"beet1";//应该是vac=a+"beet1"
每次有人间我如上例子为啥不能运行的时候,我总是有点憎恶 velocity带来的这种非人性语法
定界符和占位符通常还有别的选择,如下定界符
i Beetl
DELIMVIIEK SIAIEMENNI END=nu都可以)
·#和回车换行
:和
#利
占位符-#(-##
你也可以与团队达成一致意见来选择团队喜爱的定界符号和占位符号
定界符号里是表达式,如果表达式跟定界符或者占位符有冲突,可以在用符号,如
for(user in users)t
emailisluser.name)\163.com
${[1,2,3]}//输出一个json列表
${{key:1, value:2}}//输出一个 Json map,}需要加上
26.注释
Beet语法类似s语法,所以注释上也同js一样:单行注释采用∥
多行注视采用/*
%
/x此处是一个定义变量*/
vara=3;//定义一个变量
/*以下内容都将被注释
<%*/%
第2行是个多行注释
第3行是一个单行注释
第5行到第8行采用的是多行注释,因此里面有内容也是注释,模板将不予处理
27.临时变量定义
在模板中定义的变量成为临时变量,这类似s中采用var定义的变量,如下例子
<
var a =3
b=3
,c =abc",d=true, e=null;
varf=[1,2,3]
var g=ikey: a,key2: c)
var i= a+b:
28.全局变量定义
全局变量是通过 template binding传入的变量这些变量能在模板的仼何一个地方,包括子模板都能访问
到。如java代码里
template binding( "list, service. getUserListo);
//在模板里
%
for(user in list)t
hello, fuser name;
<‰}%
29.共享变量
共享变量指在所有模板中都可以引用的变量,可通过 groupTemplate. setSharedVars(Map sharedvars)传
入变量这些变量能用在所有模板的任何一个地方
GroupTemplate gt = new GroupTemplate(resourceloader, cfg);
Map shared new HashMapo:
shared put(" name",beetl");
gt. setSharedVars(shared)
Template t=gt. getTemplate("/org/beetl/sample/s0208/t1. txt");
String str =t render(;
System. out. println(str);
t= gt. getTemplate( /org/beetl/sample/s0208/t2. txt)j
str =t render(;
System. out. println(str)i
//t1.txt
name
//t2. txt
hello, siname]
210.模板变量
模板变量是一种特殊的变量,即可以将模板中仼何一段的输岀赋值到该变量,并允许稍后在其他地方使
用,如下代码
<
var content =0
varC="1234
print(c)
模板其他内容
<%}
第2行定义了一个模板变量 content={…};此变量跟临时变量一样,可以在其他地方使用,最常见的用
法是用于复杂的布局。请参考高级用法布局
211.引用属性
属性引用是模板中的重要一部分,bet持属性同 javascript的支持方式一样,如下
1.Bet持通过号来访问对象的的属性,如果 Javascript一样。如果User对象有个 getName0方法,
那么在模板中,可以通过$name}来访问
2.如果模板变量是数组或者List类,这可以通过囗来访问,如$ userlist[o}
3.如果模板变量是Map类,这可以通过来访问,如S{map["name!]如果key值是字符串类型,也可以
使用${ map name}但不建议这么使用,因为会让模板阅读者误以为是一个Po对象
4.Bet持 Generic get方式,即如果对象有一个 public Object get( String key)方法,可以通过”与
或者]来访间,訾如$actⅳ vity Record,name}或者$ lactivity RecordI"name']都将调用 activity Record的
get( String key方法。如果对象既有具伓属性,又有 Generic get(这种模型设计方式是不值得鼓
励),则以具体属性优先级高.
5.Bet可以通过囗来引用属性,如${user["name'相当于${ User name这跟 Javascript保持一致。但
建议不这么做,因为容易计阋读模板的人误认为这是一个Map类型
6.Betl还可以定义额外的对象属性,而无需更改java对象,这叫着虚拟属性,如,对于所有集合,数
组,都有共同的虚拟属性size虚拟属性是"~"+虚拟属性名
template binding("list",service. getUserListo)
template binding("pageMap", service getPage());
//在模板里
总共${1ist,~size}
<‰
for(user in list)f
hello, $fuser, name
<%}%>
当前页${ pageMap[page']},总共${ pageMap["tota1"]}
2.12.属性赋值
Beet2.7.0开始支持对象赋值,如:
<
var user
user name="joelli";
user. friends[o]= getNewUser ();
usermap["name"]
="joe11i";
‰>
213.算数表达式
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.