[英]Freemarker directive or method with boolean return
我正在嘗試在Freemarker中創建執行布爾檢查的自定義指令或方法,例如
<#if foo = 'bar'>
do something
</#if>
應該等同於
<@mycheck 'bar'>
do somethng
</@mycheck>
我已經在Freemarker中使用過自定義指令和方法,但是沒有找到用布爾返回值創建此方法的方法。
更新
為了更清楚地說明我要執行的操作,請考慮以下事項:如果要在某個URL中顯示模板,我要檢入。
因此,與其將變量傳遞到模板並檢查是否通過,例如
<#if location = '/home/bar'>
do something
</#if>
我想這樣更流利
<@location is='/home/bar'>
do somethng
</@location>
您那里沒有任何返回值(除非我們將輸出本身視為那樣)。 您可以編寫這樣的宏:
<#macro mycheck value>
<#if foo == value>
<#nested>
</#if>
</#macro>
然后這應該可以工作(假設您在數據模型或宏可以看到的其他地方有一個foo
):
<@mycheck 'bar'>
do somethng
</@mycheck>
TemplateDirectiveModel
的解決方案非常相似,只是不幸的是,自變量必須使用名稱( <@mycheck expected='bar'>...
或類似的名稱)進行傳遞,至少自2.3.25起。 取而代之的<#nested>
您只需撥打TemplateDirectiveBody.render(...)
在Java和#if
僅僅是一個Java if
課程。
TemplateMethodModel
不能用於此目的,因為它不能進行流控制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.