概要
<#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 代码段。