1. 自定义标签和html标签
模版基础配置。文件位置:/org/beetl/core/beetl-default.properties
l html标签:
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = #
HTML_TAG_BINDING_ATTRIBUTE = var
说明:
HTML_TAG_SUPPORT = true HTML_TAG_FLAG = #
符号为#,默认配置下,模板引擎识别这样的类似html标签,并能调用相应的标签函数或者模板文件。
HTML_TAG_BINDING_ATTRIBUTE = var
如果标签属性有var,则认为是需要绑定变量给模板的标签函数
l 自定义标签:
## 标签类
TAG.include= org.beetl.ext.tag.IncludeTag
说明:
注册了一个include标签函数
2,定界符与占位符号
Beetl模板语言类似JS语言和习俗。
l 定界符号: (表达式)
l 占位符用于静态文本里嵌入占位符用于输出:${}
3. 全局变量,临时变量、共享变量、模板变量
l 全局变量 全局变量是通过template.binding传入的变量,这些变量能在模板的任何一个地方,包括子模板都能访问。(后台配合)
n 实现方式:
template.binding("list",service.getUserList()); // list:用户列表集合
n 源理过程:略
l 临时变量类似js语言和习俗(在模板中定义的变量成为临时变量)
var b = 3,c = "abc",d=true,e=null;
var f = [1,2,3];
var g = {key1:a,key2:c}; var i = a+b; %>
l 共享变量 共享变量指在所有模板中都可以引用的变量,后台配合。
n 实现方式:
groupTemplate.setSharedVars(Map sharedVars)传入变量
n 源理过程:略
l 模板变量是一种特殊的变量,即可以将模板中任何一段的输出赋值到该变量,并允许稍后在其他地方使用
var c = "1234";
print(c); %> 模板其他内容:
说明:
模板变量content = { …} ; 此变量跟临时变量一样,可以在其他地方使用,最常 见的用法是用于复杂的布局。请参考高级用法布局。
4.布局技术
类似js语言和习俗
w3c js 参考
jqueyry meiui等三方库
5.直接调用java代码
可以通过符号@来表明后面表达式调用是java风格,可以调用对象的方法,属性
n 文件位置 /org/beetl/core/beetl-default.properties
NATIVE_CALL = TRUE
说明:允许本地Class直接调用
n 详细说明
${@user.getMaxFriend(“lucy”)}
${@com.xxxx.constants.Order.getMaxNum()}
${@com.xxxx.User$Gender.MAN}
说明:可以调用instance的public方法和属性,也可以调用静态类的属性和方法,需要加一个@指示此调用是直接调用class,其后的表达式是java风格的。
need-to-insert-img
6.页面赋值(属性处理)
n 通过”.”号来访问对象的的属性:${xxx.name}
n 数组或者List类:${userList[0]}
n Map类:${map[“name”]}; 或者${map.name}
n Beetl也支持Generic Get方式,即如果对象有一个public Object get(String key)方法,可以通过”.”号或者[]来访问,譬如${activityRecord.name}或者${activityRecord[“name”] }都将调用activityRecord的get(String key)方法。如果对象既有具体属性,又有Generic get(这种模型设计方式是不值得鼓励),则以具体属性优先级高.
n 可以通过[]来引用属性如${user[“name”]}相当于${user.name}.这跟javascript保持一致。但建议不这么做,因为容易让阅读模板的人误认为这是一个Map类型
n 定义额外的对象属性,而无需更改java对象,这叫着虚拟属性,如,对于所有集合,数组,都有共同的虚拟属性size.虚拟属性是“.~”+虚拟属性名
7.局部渲染技术
越来越多web网站依赖于ajax,如table的翻页,流行方式是浏览器发出ajax请求,后台处理后返回一个json,浏览器端将json数据拆开,拼成一条一条的行数据,然后生成dom节点,追加到表格里。作为另外一种可选技术,beetl支持局部渲染技术,允许后台处理返回的是一个完成的html片段
need-to-insert-img
后台调用:
render("/index.html#userTable");
原理过程:暂略
参考官网http://ibeetl.com/guide/#beetl