文档章节

扩展beetl 让 HTML标签支持父子嵌套

闲大赋
 闲大赋
发布于 2015/02/09 22:02
字数 477
阅读 796
收藏 3
默认情况下,Beetl的html标签并不支持父子嵌套,就像类似jsp标签那样,父标签需要知道子标签的信息,子标签也需要知道父标签信息。但是beetl只需要简单扩展,就能完成嵌套标签支持。 

首先看一个最终的使用效果,实现俩个html标签table.tag,tr.tag.可以在页面上这么用:

<#table id="tableId" style="kk" data="${userList}" var="row,index">
<#tr style="trcss1" name=""  > ${index} </#tr>
<#tr style="trcss1" name="名称" import="true" > ${row.name} </#tr>
<#tr style="trcss2" name="年纪"> ${row.age} </#tr>
<#tr style="trcss3" name="操作"> <#label icon="update">更新</#label><#label icon="update">delete</#label></#tr>
</#table>

table标签可以接收一个data,就是一个等待遍历的集合,var属性申明了俩个变量,分别是代表行数据的row,和代表顺序的index,这样标签tr可以使用.这俩个变量在table.tag里赋值,able.tag标签实现如下:


<table>
<tr>
<%
//tag表示当前标签,chidren属性获得下级标签
var trs = tag.children;
for(tr in trs){
//输出表头
%>
<td>${tr.name}</td>
<%} %>
<tr>
<%

for(row in tag.data) {
//先绑定变量,这样tr能使用
@tag.binds(row,rowLP.index);
%>
<tr>
<%

for(tr in trs){
//tr.body将执行tr里的内容。另外一个是tr.execute,将调用tr.tag,目前我们不需要调用tr.tag
%>
<td class="${tr.style}">${tr.body}</td>
<%} %>
<tr>
<%} %>
</table>


要实现如上嵌套功能,beetl需要注册新的标签实现来代替原有的htmltag,和 htmltagvar实现,配置文件如下:


TAG.htmltag= bingo.util.beetl.HTMLTag
TAG.htmltagvar= bingo.util.beetl.HTMLVarBindingTag



 这俩个类如何实现,就不再这里展开了,具体可以参考代码

http://git.oschina.net/xiandafu/bingo



© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1121
博文 86
码字总数 81146
作品 10
西城
架构师
Beetl 2.4.0 发布,Java 模板引擎

Beetl 2.4.0 发布,本次 包含了一个特性升级,允许html 标签和 html 实现的Function 采用不同的定界符,如模板中使用简洁的 @和回车,html标签使用 对渲染逻辑较为友好的<% %> 定界符 FFFFFF...

闲大赋
2016/05/09
1K
14
Beetl 2.7.5 发布,Java 模板引擎

Beetl 2.7.5 发布了,改进内容包括: # 288 for循环 变量定义错误的提示信息完善 FFFFFF;"> com.ibeetl beetl 2.7.5 Beetl是新一代的模板引擎。总得来说,它的特性如下: 功能完备:同主流的...

闲大赋
2016/12/29
1K
7
扩展Beetl标签,支持父子嵌套和脚本绑定

工程例子在 https://git.oschina.net/xiandafu/beetl-json 安装 TAG.htmltag= com.beetl.tagext.HTMLTagTAG.htmltagvar= com.beetl.tagext.HTMLVarBindingTag 例子 <!DOCTYPE html><html><he......

闲大赋
2015/05/12
91
0
Beetl 2.4.2 发布,Java 模板引擎

Beetl 2.4.2 发布了,改进记录: # 241 GeneralVarTagBinding 增加一个 getAttributes方法,获取html标签得所有属性 # 242 方法调用后有表达式导致报错bug修复 com.ibeetlbeetl2.4.2 Beetl 大...

闲大赋
2016/06/07
2.2K
14
Beetl 2.2.0 发布,Java 模板引擎

因为引入了新语法ajax标记,所以版本跳到2.2.0. 新增功能: #126:html标签指示符号允许多个字母,如默认的#,<#table>认为是html标签,如果改为"ct:",则被认为是html标签. #124: html 标签 绑定...

闲大赋
2015/03/05
1K
15

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iOS开发用到的图片尺寸汇总

启动图 型号 竖屏 横屏 iPhone SE 640px × 1136px 1136px × 640px iPhone 6s 750px × 1334px 1334px × 750px iPhone 6s Plus 1242px × 2208px 2208px × 1242px iPhone 7 750px × 1334......

业界小白
21分钟前
0
0
浅谈redis

redis是一个开源,内存式的健值存储数据库,也被称为健值存储的字典服务器。健值类型有字符串,hash(哈希类型),set(集合),list(列表) 和有序集合 特征细节: 内存式:redis将健值存储在主...

拐美人
28分钟前
0
0
无限扩容,按需使用!ZStack推出基于阿里云NAS的文件存储服务

日前,ZStack发布2.6.0版本,正式宣布推出基于阿里云NAS的文件存储服务。得益于业界领先的阿里云分布式存储架构,融合NAS后的ZStack 2.6.0拥有高性能、高可靠、容量无限扩展、一键操作、按需...

ZStack社区版
31分钟前
1
0
崛起于Springboot2.X之Mongodb多数据源处理(35)

多数据源:4个mongodb库! 目录结构图: 1、添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId>......

木九天
36分钟前
0
0
如何获取显示器的EDID信息

Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID打交道。EDID这东西很简单,但是如果...

DB_Terrill
37分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部