文档章节

扩展Beetl标签,支持父子嵌套和脚本绑定

闲大赋
 闲大赋
发布于 2015/05/12 08:34
字数 295
阅读 127
收藏 2

工程例子在  https://git.oschina.net/xiandafu/beetl-json


安装

TAG.htmltag= com.beetl.tagext.HTMLTag
TAG.htmltagvar= com.beetl.tagext.HTMLVarBindingTag

例子

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>复杂的标签实现演示</title>
</head>
<body>

<p> 简单例子 <p>
<#simple>hello</#simple>

<p> 绑定例子 <p>
<#data var="name,index">
name=${name},index=${index}.
</#data>


<p>标签嵌套例子</p>
<%
var data = [{id:1,name:'你好'},{id:2,name:'他好'}];
%>
<#table data="${data}" var="row">
<#tr name="编号">${row.id}</#tr>
<#tr name="名称">${row.name}</#tr>
</#table>
</body>
</html>


让我们看看如何实现的

simple 标签

<h2>${tag.body}</h2>


与内置不同,获得标签体是调用tag.body, 也就是tag.getBody()方法

data 标签

data标签需要绑定变量,因此会在data.tag 脚本里调用本地方法@tag.binds 来绑定,然后tag.body执行,此处例子执行2次
<%
var name="ok";
var index = 1;
//绑定
@tag.binds(name,index);
for(var i=0;i<2;i++){
//执行标签体
%>
${tag.body} 
<%}%>


table 标签

可以调用tag.children获得标签体,然后分别执行标签体内容
<%
var trs = tag.children;
%>
<table>
<!--  显示表头 -->
<tr>
<% 
for(tr in trs){%>
<td><h2>${tr.name}</h2></td>
<%} %>
</tr>
<!--  显示数据 -->
<% for(row in tag.data) { 
//先绑定变量,这样tr能使用
@tag.binds(row);
%>
<tr>
<% for(tr in trs){ %>
    <td >${tr.body}</td>
<% } %>
<tr>
<%   } %>
</table>

© 著作权归作者所有

闲大赋

闲大赋

粉丝 1269
博文 104
码字总数 100263
作品 10
西城
架构师
私信 提问
扩展beetl 让 HTML标签支持父子嵌套

默认情况下,Beetl的html标签并不支持父子嵌套,就像类似jsp标签那样,父标签需要知道子标签的信息,子标签也需要知道父标签信息。但是beetl只需要简单扩展,就能完成嵌套标签支持。 首先看一...

闲大赋
2015/02/09
964
0
Beetl 3.0.0.M1 版本发布,Java 模板引擎

Beetl是一款全功能,性能优秀的国产模板引擎,可以广泛用于动态页面生成,静态页面生成,代码生成,文本转换,脚本和规则引擎等,从2011年来,一直维护,并得到国内用户的肯定。 本次发布是3...

闲大赋
04/23
1K
28
Java 模板引擎 Beetl 2.8.0 发布,增加根对象支持

Java 模板引擎 Beetl 2.8.0 发布了,改进内容包括: #348 beetl 默认配置DefaultTemplateEngine #347 增加根对象支持 #346 允许设置全局 ClassLoader #345 支持struts2.5, 由于struts升级不...

闲大赋
2018/04/23
1K
3
Beetl 2.9.0 发布,修改 HTML 标签的渲染机制

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

闲大赋
2018/09/09
655
2
Beetl 2.7.14 发布,Java 模板引擎

本次发布主要增强了MVC 分离开发: Beetl 很早就支持分离开发模式。前端人员可以独立开发模板和测试模板,这次主要是提供了专门的WebSimulate类来支持MVC分离开发和REST模拟服务。 比如,对于...

闲大赋
2017/05/09
770
6

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
808
11
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
15
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部