首先看一個最終的使用效果,實現倆個html標籤table.tag,tr.tag.能夠在頁面上這麼用: css
<#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標籤實現以下: html
<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實現,配置文件以下: java
TAG.htmltag= bingo.util.beetl.HTMLTag TAG.htmltagvar= bingo.util.beetl.HTMLVarBindingTag
http://git.oschina.net/xiandafu/bingo
css3