Getting literal
Velocity 使用特殊字符$和#来帮助它工作,所以如果要在template 里使用这些特殊字符
要格外小心。本节将讨论$字符。
货币字符
在VTL 中使用$2.5 这样的货币标识是没有问题得的,VTL 不会将它错认为是一个
reference,因为VTL 中的reference 总是以一个大写或者小写的字母开始。
Escaping valid VTL reference
VTL 中使用“\”作为逃逸符。
例如:
#set( $email = “foo” )
将render 为:
foo
\foo
如果email 变量没有被定义则
将被render 为:
注意:VTL 中未被定义的变量将被认为是一个字符串,所以以下例子:
#set( $foo = “gibbous” )
$moon = $foo
的输出结果是:
$moon = gibbous
Case substitution
现在你已经对reference 比较熟悉了,你可以将他们高效的应用于你的template 了。
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}
但是,注意VTL 中不会将reference 解释为对象的实例变量。例如:$foo.Name 将被解
释为Foo 对象的getName()方法,而不是Foo 对象的Name 实例变量。
Directives
Reference 允许设计者使用动态的内容,而directive 使得你可以应用java 代码来控制你
的显示逻辑,从而达到你所期望的显示效果。
#set
#set directive 被用于设置一个reference 的值。例如:
#set ( $primate = “monkey” )
#set ( $customer.Behavior = $primate )
赋值左侧的(LHS)必须是一个变量或者属性reference。右侧(RHS)可以是以下
类型中一种:
相关推荐
5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如自动转义特殊字符,防止XSS攻击。 **velocity-tools-2.0.jar** `velocity-tools-2.0.jar`...
在Velocity的实现中,还可以通过转义字符实现对VTL特殊字符的转义,同时在输出文本时也可以使用转义字符以达到预期的显示效果。例如,可以使用转义字符来插入一个美元符号“$”而不引起变量解析。 VTL格式化问题...
- `#escape`:用于转义特殊字符,防止XSS攻击。 - **注释**:使用`##`进行单行注释,`#* 注释内容 *#`进行多行注释。 2. **Velocity上下文(Context)** - 上下文是Velocity模板与Java对象交互的桥梁。开发者可以...
3. **逃逸机制**:使用`\`可以转义特殊字符,如`\$`表示输出美元符号。 4. **自定义工具类**:开发者可以创建自己的工具类,通过`#set`指令注入到模板环境中,供模板使用。 5. **模板继承**:通过`#extends`指令...
4. **内置方法**:Velocity提供了一些内置的方法,如`escape()`用于转义特殊字符,`format()`进行格式化输出。 **二、Velocity与Freemarker比较** 虽然Velocity和Freemarker都是视图模板引擎,但它们有各自的特性...
12. **Escaping(转义)**:用于处理特殊字符和VTL引用,例如`\$`用于输出美元符号 `$`。 13. **Case Substitution(可选的格式)**:Velocity支持大小写的转换。 14. **Math Operations(数学计算)**:可以进行基本的...
4. **逃逸机制(Escaping)**:Velocity 提供了 `##` 符号用于注释,`@` 符号用于转义特殊字符,防止变量或指令被误解析。 ** VelocityProject 示例** 在 "VelocityProject" 中,我们可能看到以下结构: - **...
1. **模板(Template)**:模板是Velocity的核心,它是HTML或者其他格式的静态文件,其中包含了一些特殊的指令(Velocity指令),用于插入动态内容。 2. **上下文(Context)**:上下文是数据容器,用于存储要传递...
- 在 Velocity 模板中,未定义的变量会被当作字符串处理。 - Velocity 不会将引用解析为对象的实例变量。例如,`$foo.Name` 被解释为调用 `getName()` 方法。 #### 2. 循环 Velocity 支持使用 `#foreach` 指令进行...
- **模板语言参考**: 查看完整的模板语言语法,包括所有的指令、控制结构和特殊字符。 - **API 文档**: 理解 Velocity 提供的各种类和接口,如 `VelocityEngine`、`VelocityContext` 和 `Template`。 - **错误...
1. **基础语法**:Velocity使用特殊的指令(Directives)和变量(Variables)来控制模板的处理。例如,`#set`指令用于赋值,如`#set( $monkey = $bill )`,这将变量`$monkey`设置为`$bill`的值。 2. **变量引用**:...
例如,可以使用Velocity的内置宏或者自定义函数来自动转义HTML特殊字符,如 `、`>`、`&` 和 `'`。 `EscapeRequestReference`可能是一个类,用于处理HTTP请求中的引用,并确保它们在被插入到Velocity模板中之前得到...
Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,以及大小写的替换。 在实际应用中,Velocity 不仅限于 Web 开发,还...
Velocity的工作原理是,它解析含有 Velocity指令的模板文件,这些指令通常是以`$`或`#`开头的特殊标记,然后在运行时将这些指令与Java对象中的数据进行结合,最终生成输出。这种方式极大地简化了Web应用中视图层的...
1. **模板(Template)**: 模板是Velocity的基石,它定义了HTML、XML或其他格式的静态文本结构,其中包含了一些特殊的指令(称为Velocity语句)来插入动态数据。 2. **上下文(Context)**: 上下文是模板和Java代码...
- **Escaping**:处理模板中的特殊字符。 - **Formatting Issues**:格式化问题处理。 - **Advanced Issues**:高级问题解决方法。 #### 四、如何使用Velocity代码生成工具 1. **安装配置**:确保项目环境中已经...
4. **函数和宏**:Freemarker提供了内置函数,如`htmlEscape`用于转义HTML特殊字符,同时用户可以自定义宏来封装重复的模板片段。 5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项...
)**:解决转义字符和特殊符号的问题。 - **Velocimacro 的杂项(Velocimacro Miscellany)**:有关 Velocimacro 的其他用法。 - **字符串连接(String Concatenation)**:连接字符串的方法。 #### 十二、反馈...