本期視頻實(shí)現(xiàn)了評(píng)論列表分頁;
內(nèi)容簡介:使用了HTML完成分頁抽取,并且介紹了自定義定界符
一起學(xué)beetl目錄:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598
作者:GK
HTML標(biāo)簽
Beetl 也支持HTML tag形式的標(biāo)簽,個(gè)人認(rèn)為,這是一種引用模板更加優(yōu)雅的實(shí)現(xiàn),能和靜態(tài)HTML標(biāo)簽融為一體。
比如在一個(gè)模板中引用另外一個(gè)模板,我們可以使用include
<%include("/common/page.html",{page:msgPage,action:"detail",condition:"&id="+blog.id!}){}%>
我們也可以為 page.html定義一個(gè)HTML標(biāo)簽,那他的調(diào)用方法就變成了下面這種。
<#page page="${msgPage}" condition='${"&id="+blog.id!}' action="detail"/>
是不是更加符合,靜態(tài)HTML標(biāo)簽的習(xí)慣。
一、配置
HTML標(biāo)簽?zāi)J(rèn)配置
#支持HTML標(biāo)簽
HTML_TAG_SUPPORT = true
#標(biāo)簽以#號(hào)開頭識(shí)別為HTML標(biāo)簽
HTML_TAG_FLAG = #
#自定義標(biāo)簽文件Root目錄和后綴
RESOURCE.tagRoot = htmltag
RESOURCE.tagSuffix = tag
如果想修改配置,直接在根目錄下的 beetl.properties 當(dāng)中修改覆蓋就行
二、使用
在templates(你定義的模板目錄)下新建htmltag,并且新建標(biāo)簽page.tag,定義標(biāo)簽內(nèi)容:
<div class="paging">
<%if(page.pageNumber <= 1){%>
<a href="#">首頁</i></a>
<%}else{%>
<a href="${ctxPath}/${action!}?pageNumber=${page.pageNumber-1}${condition!}">上一頁</i></a>
<%}%>
<%if(page.pageNumber >= page.totalPage){%>
<a href="#">末尾頁</i></a>
<%}else{%>
<a href="${ctxPath}/${action!}?pageNumber=${page.pageNumber+1}${condition!}">下一頁</i></a>
<%}%>
</div>
在需要調(diào)用標(biāo)簽的模板中寫入:
<#page page="${msgPage}" condition='${"&id="+blog.id!}' action="detail"/>
Beetl自定義標(biāo)簽的傳參形式,與HTML習(xí)慣保持一致,采用“屬性=值”的方式,值必須使用雙引號(hào)或者單引號(hào),引起來。
三、其他的注意事項(xiàng)
- 可以在自定義標(biāo)簽里引用標(biāo)簽體的內(nèi)容,標(biāo)簽體可以是普通文本,beetl模板,以及嵌套的自定義標(biāo)簽等。如上<#richeditor 標(biāo)簽體里,可用“tagBody”來引用
- HTML自定義標(biāo)簽 的屬性值均為字符串 如<#input value="123" />,在input.tag文件里 變量value的類型是字符串
- 可以在屬性標(biāo)簽里引用beetl變量,如<#input value="${user.age}" />,此時(shí)在input.tag里,value的類型取決于user.age
- 在屬性里引用beetl變量,不支持格式化,如<#input value="${user.date,'yyyy-MM-dd'}"/>,如果需要格式化,需要在input.tag文件里自行格式化
- 在標(biāo)簽屬性里傳json變量需要謹(jǐn)慎,因?yàn)閖son包含了"}",容易與占位符混合導(dǎo)致解析出錯(cuò),因此得使用""符號(hào),如<#input value="${ {age:25} }" />
- html tag 屬性名將作為 其對(duì)應(yīng)模板的變量名。如果屬性名包含“-”,則將轉(zhuǎn)為駝峰命名的變量,如data-name,轉(zhuǎn)為dataName
- 默認(rèn)機(jī)制下,HTMLTagSupportWrapper2 實(shí)現(xiàn)了標(biāo)簽(2.8.x以前使用HTMLTagSupportWrapper)
具體請(qǐng)參考視頻教程,或者gitee中的源碼
自定義定界符與占位符
定界符與占位符在之前的博客中已經(jīng)介紹過。
定界符就是界定靜態(tài)代碼與Beetl代碼的符號(hào)。
占位符就是在靜態(tài)代碼中,為Beetl編譯的結(jié)果占據(jù)一個(gè)位置,(可以回憶一下el表達(dá)式)。
定界符與占位符的默認(rèn)配置如下:
#占位符開始符號(hào)
DELIMITER_PLACEHOLDER_START=${
#占位符的結(jié)束符號(hào)
DELIMITER_PLACEHOLDER_END=}
#定界符開始符號(hào)
DELIMITER_STATEMENT_START=<%
#定界符結(jié)束符號(hào)
DELIMITER_STATEMENT_END=%>
自定義配置
在根目錄下的 beetl.properties中修改配置,比如
#定界符開始符號(hào)
DELIMITER_STATEMENT_START=@
#定界符結(jié)束符號(hào)
DELIMITER_STATEMENT_END=
@ 和回車換行 (此時(shí),模板配置DELIMITER_STATEMENT_END= 或者 DELIMITER_STATEMENT_END=null 都可以)
結(jié)束符留空,或者=null 表示 是以回車作為結(jié)尾。
項(xiàng)目git地址:https://gitee.com/gavink/beetl-blog
視頻地址:下載下來會(huì)更清晰,視頻比較長,可使用倍速看
百度網(wǎng)盤下載: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取碼: 68im
在線播放地址:bilibili (可以調(diào)節(jié)清晰度): https://www.bilibili.com/video/av36278644/?p=7
博客目錄:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598