07.HTML標(biāo)簽以及自定義定界符配置---《Beetl視頻課程》

本期視頻實(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容