我是自由标记模板的新手,在我的模板中,看来我可能不得不重复很多if和else块,并重复相同的if条件。 是否有更方便或更干净的方式编写此代码(如果阻塞)或代替重复它们。
<span > </span>
<#elseif section.role?has_content && section.person?has_content && section.organisation??>
<span > </span>
<#elseif section.role?has_content && section.organisation?has_content && section.person??>
<span > </span>
<#elseif section.person?has_content && section.organisation?has_content && section.role??>
<span > </span>
<#elseif section.person?has_content && section.role?? && section.organisation??>
<span > </span>
<#elseif section.organisation?has_content && section.role?? && section.person??>
<span > </span>
<#elseif section.role?has_content && section.organisation?? && section.person??>
<span > </span>
</#if>
答案 0 :(得分:1)
我认为您可以在freemaker中执行类似的操作,这样可以更清洁,然后重复执行条件。
您不必在变量中分配此条件值section.role?has_content
,而是可以像这样<#assign hasRole = section.role?has_content />
<#assign hasRole = section.role?has_content />
<#assign hasOrganisation = section.organisation?has_content />
<span >
<#if section.person?has_content><span ></span><#if section.role?has_content><span ></span></#if></#if>
<#if section.role?has_content><span ></span><#if section.organisation?has_content><span ></span></#if></#if>
<#if section.organisation?has_content>
<span ></span>
</#if>
</span>```
答案 1 :(得分:0)
您可以在一个if语句中检查所有内容:
<#if section.person?? && section.role?? && section.organisation?? &&
(section.person?has_content || section.organisation?has_content || section.role?has_content)>
<span ></span>
</#if>
答案 2 :(得分:0)
实际上,您可以使用<#switch>标记来处理多种情况,就像经典的编程语言一样。这是来自freemarker.apache.org的示例:
<#switch animal.size>
<#case "small">
This will be processed if it is small
<#break>
<#case "medium">
This will be processed if it is medium
<#break>
<#case "large">
This will be processed if it is large
<#break>
<#default>
This will be processed if it is neither
</#switch>
在您的示例中,正如我所看到的,您可以将语句准确地包装在多个切换案例中,并使用亚当建议的变量