概要
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
这里:
-
value
,refValue1
,等: 表达式将会计算成相同类型的标量。
break
和 default
是可选的。
描述
这个指令的用法是不推荐的,因为向下通过的行为容易出错。使用 elseif
来代替,
除非你想利用向下通过这种行为。
Switch 被用来选择模板中的一个片段,如何选择依赖于表达式的值:
<#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>
在 switch
中间必须有一个或多个
<#case value>
,
在所有 case
标签之后,有一个可选的
<#default>
。 当FreeMarker到达
switch
指令时,它会选择一个
case
指令,这里的
refValue
等于
value
并且继续模板处理。
如果没有和合适的值匹配的 case
指令,那么就继续处理
default
指令,如果它存在,否则就继续处理
switch
结束标签之后的内容。现在有一个混乱的事情:
当它选择一个 case
指令后,它就会继续处理其中的内容,
直到遇到 break
指令。也就是它遇到另外一个
case
指令或 <#default>
标记时也不会自动离开 switch
指令。比如:
<#switch x> <#case 1> 1 <#case 2> 2 <#default> d </#switch>
如果 x
是 1,它会打印1 2 d;如果
x
是 2,那么就会打印2 d;如果
x
是 3,那么就会打印d。这就是前面提到的向下通过行为。
break
标记指示 FreeMarker 直接略过剩下的
switch
代码段。