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