簡體   English   中英

具有布爾返回值的Freemarker指令或方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM