文档章节

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

闲大赋
 闲大赋
发布于 2015/02/09 22:02
字数 477
阅读 830
收藏 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



© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1136
博文 90
码字总数 84738
作品 10
西城
架构师
Beetl 2.9.0 发布,修改 HTML 标签的渲染机制

本次发布主要修改了HTML 标签的渲染机制,HTMLTagSupportWrapper2 采用延迟渲染 # 368 tagBody 改为按照需要渲染 #367 俩处错误提示不明显的地方 在2.9.0版本,HTML 标签内部渲染是使用tagBo...

闲大赋
09/09
0
0
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 2.2.0 发布,Java 模板引擎

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

闲大赋
2015/03/05
1K
15
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

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
4
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
17
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部