`

Velocity的特殊字符

阅读更多

Getting literal

Velocity 使用特殊字符$和#来帮助它工作,所以如果要在template 里使用这些特殊字符

要格外小心。本节将讨论$字符。

 

货币字符

在VTL 中使用$2.5 这样的货币标识是没有问题得的,VTL 不会将它错认为是一个

reference,因为VTL 中的reference 总是以一个大写或者小写的字母开始。

 

Escaping valid VTL reference

VTL 中使用“\”作为逃逸符。

例如:

#set( $email = “foo” )

$email

\$email

\\$email

\\\$email

将render 为:

foo

$email

\foo

\\$email

如果email 变量没有被定义则

$email

\$email

\\$email

\\\$email

将被render 为:

$email

\$email

\\$email

\\\$email

注意: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)可以是以下

类型中一种:

分享到:
评论

相关推荐

    Velocity用户手册---中文版

    Velocity是什么? Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面...

    velocity的jar包

    5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如自动转义特殊字符,防止XSS攻击。 **velocity-tools-2.0.jar** `velocity-tools-2.0.jar`...

    velocity-doc

    在Velocity的实现中,还可以通过转义字符实现对VTL特殊字符的转义,同时在输出文本时也可以使用转义字符以达到预期的显示效果。例如,可以使用转义字符来插入一个美元符号“$”而不引起变量解析。 VTL格式化问题...

    Velocity模板解析

    - `#escape`:用于转义特殊字符,防止XSS攻击。 - **注释**:使用`##`进行单行注释,`#* 注释内容 *#`进行多行注释。 2. **Velocity上下文(Context)** - 上下文是Velocity模板与Java对象交互的桥梁。开发者可以...

    Velocity用户手册(中文版)

    3. **逃逸机制**:使用`\`可以转义特殊字符,如`\$`表示输出美元符号。 4. **自定义工具类**:开发者可以创建自己的工具类,通过`#set`指令注入到模板环境中,供模板使用。 5. **模板继承**:通过`#extends`指令...

    velocity document

    4. **内置方法**:Velocity提供了一些内置的方法,如`escape()`用于转义特殊字符,`format()`进行格式化输出。 **二、Velocity与Freemarker比较** 虽然Velocity和Freemarker都是视图模板引擎,但它们有各自的特性...

    Velocity 应用示例

    4. **逃逸机制(Escaping)**:Velocity 提供了 `##` 符号用于注释,`@` 符号用于转义特殊字符,防止变量或指令被误解析。 ** VelocityProject 示例** 在 "VelocityProject" 中,我们可能看到以下结构: - **...

    velocity的简单demo

    1. **模板(Template)**:模板是Velocity的核心,它是HTML或者其他格式的静态文件,其中包含了一些特殊的指令(Velocity指令),用于插入动态内容。 2. **上下文(Context)**:上下文是数据容器,用于存储要传递...

    velocity语法

    - 在 Velocity 模板中,未定义的变量会被当作字符串处理。 - Velocity 不会将引用解析为对象的实例变量。例如,`$foo.Name` 被解释为调用 `getName()` 方法。 #### 2. 循环 Velocity 支持使用 `#foreach` 指令进行...

    velocity 使用手冊整理

    - **模板语言参考**: 查看完整的模板语言语法,包括所有的指令、控制结构和特殊字符。 - **API 文档**: 理解 Velocity 提供的各种类和接口,如 `VelocityEngine`、`VelocityContext` 和 `Template`。 - **错误...

    velocity教程

    1. **基础语法**:Velocity使用特殊的指令(Directives)和变量(Variables)来控制模板的处理。例如,`#set`指令用于赋值,如`#set( $monkey = $bill )`,这将变量`$monkey`设置为`$bill`的值。 2. **变量引用**:...

    记录一下Velocity防Xss攻击

    例如,可以使用Velocity的内置宏或者自定义函数来自动转义HTML特殊字符,如 `、`>`、`&` 和 `'`。 `EscapeRequestReference`可能是一个类,用于处理HTTP请求中的引用,并确保它们在被插入到Velocity模板中之前得到...

    Velocity用户手册.doc

    Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,以及大小写的替换。 在实际应用中,Velocity 不仅限于 Web 开发,还...

    velocity生成静态页面实例

    Velocity的工作原理是,它解析含有 Velocity指令的模板文件,这些指令通常是以`$`或`#`开头的特殊标记,然后在运行时将这些指令与Java对象中的数据进行结合,最终生成输出。这种方式极大地简化了Web应用中视图层的...

    Velocity的基本用法

    1. **模板(Template)**: 模板是Velocity的基石,它定义了HTML、XML或其他格式的静态文本结构,其中包含了一些特殊的指令(称为Velocity语句)来插入动态数据。 2. **上下文(Context)**: 上下文是模板和Java代码...

    Velocity代码生成工具

    - **Escaping**:处理模板中的特殊字符。 - **Formatting Issues**:格式化问题处理。 - **Advanced Issues**:高级问题解决方法。 #### 四、如何使用Velocity代码生成工具 1. **安装配置**:确保项目环境中已经...

    freemarker&velocity的使用

    4. **函数和宏**:Freemarker提供了内置函数,如`htmlEscape`用于转义HTML特殊字符,同时用户可以自定义宏来封装重复的模板片段。 5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项...

Global site tag (gtag.js) - Google Analytics