# 11. Case Substitution
現在你大致了解了引用,可以在模板中使用它們了。Velocity 采用了很多JAVA原理的優點,模板設計人員會發現非常容易使用。例如:
```
$foo
$foo.getBar()
## is the same as
$foo.Bar
$data.getUser("jon")
## is the same as
$data.User("jon")
$data.getRequest().getServerName()
## is the same as
$data.Request.ServerName
## is the same as
${data.Request.ServerName}
```
這個例子顯示了引用的一些其他用法。Velocity 借鑒了Java的自省和組件bean特征,來解決引用名在上下文中作為對象和對象方法的問題。可以在你的模板的任何地方插入引用和求值。
Velocity, 建模在Sun Microsystems定義的BEAN規范之上,是大小寫敏感的;開發者努力捕捉和糾正可能出現的用戶錯誤。當方法getFoo() 在模板中通過$bar.foo引用時,Velocity 首先嘗試$getfoo。如果失敗,他會再嘗試 $getFoo。類似地,當一個模板引用到 $bar.Foo, Velocity 將嘗試 $getFoo() 先,然后嘗試 getfoo()。
注意:模板中引用示例變量的問題仍然沒有解決。只有引用等價于JavaBean的 getter/setter 方法解決了。(比如 $foo.Name 解決了到類 Foo的 getName() 示例方法的引用,但不能引用Foo的一個公共實例變量Name)。
- 1. 關于
- 2. 什么是Velocity?
- 3. Velocity 可以做什么?
- 3.1. Mud Store 示例
- 4. Velocity模板語言(VTL): 介紹
- 5. Hello Velocity World!
- 6. 注釋
- 7. 引用
- 7.1. 變量Variables
- 7.2. 屬性
- 7.3. 方法
- 8. 形式引用符Formal Reference Notation
- 9. 安靜引用符Quiet Reference Notation
- 11. Case Substitution
- 12. 指令
- 12.1. #set
- 12.2. 字面字符串
- 12.3. 條件
- 12.3.1 If / ElseIf / Else
- 12.3.2 關系和邏輯操作符
- 12.4. 循環
- 12.4.1. Foreach 循環
- 12.5. 包含
- 12.6. 解析
- 12.7. 停止
- 12.10. 宏
- 12.10.1. Velocimacro 參數
- 12.10.2. Velocimacro 屬性
- 12.10.3. Velocimacro Trivia
- 13. Getting literal
- 13.1. 貨幣字符
- 13.2. 轉義 有效的 VTL 指令
- 13.3. 轉義 無效的 VTL 指令
- 14. VTL 格式化問題
- 15. 其它特征和雜項
- 15.1. 數學特征
- 15.2. 范圍操作符
- 15.3. 進階:轉義和!
- 15.4. Velocimacro 雜記
- 15.5. 字符串聯