`

Velocity手册(3)【转】

    博客分类:
  • java
阅读更多

方法

一个方法就是被定义在java中的一段代码,并且它有完成某些有用工作的能力,例如一个执行计算和判断条件是否成立、满足等。方法是一个由$开始并跟随VTL标识符组成的References,一般还包括一个VTL方法体。例如:

$customer.getAddress()

$purchase.getTotal()

$page.setTitle( “My Home Page” )

$person.setAttributes( [“Strange”, “Weird”, “Excited”] )

前两个例子$customer.getAddress()和$purchase.getTotal()看起来挺想上面的属性$customer.Address 和 $purchase.Total。如果你觉得他们之间有某种联系的话,那你是正确的。

VTL属性可以作为VTL方法的缩写。$customer.Address属性和使用$customer.getAddress()方法具有相同的效果。如果可能的话使用属性的方式是比较合理的。属性和方法的不同点在于你能够给一个方法指定一个参数列表。

正式reference标记

reference的正是格式如下:

${mudSlinger}变量

${customer.Address}属性

${purchase.getTotal()}方法

非正是格式更见常用,但是有时还是使用正是格式比较适合。例如:你希望通过一个变量$vice来动态的组织一个字符串。

Jack is a $vicemaniac.

本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。所以,应该使用正是格式书写

Jack is a ${vice}maniac

现在Velocity知道变量是$vice而不是$vicemaniac。

Quiet reference notation

例如:

<input type=”text” name=”email” value=”$email” />

当页面的form被初始加载时,变量$email还没有值,这时你肯定是希望它能够显示一个blank text来代替输出”$email”这样的字段。那么使用quiet reference notation就比较合适。

<input type=”text” name=”email” value=”$!email”/>

这样文本框的初始值就不会是email而是空值了。

正式和quiet格式的reference notation也可一同使用,像下面这样:

<input type=”text” name=”email” value=”$!{email}”/>

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)可以是以下类型中一种:

l变量reference

lString literal

l属性reference

l方法reference

lnumber literal

lArrayList

下面是应用各种类型的RHS的例子:

#set ( $monkey = $bill ) ##变量reference

#set ( $monkey.Friend = “monica” ) ##String literal

#set ( $monkey.Blame = $whitehouse.Leak )##属性reference

#set ( $monkey.Plan = $spindoctor.weave($web) )##方法reference

#set ( $monkey.Number = 123 )##Number literal

#set ( $monkey.Say = [“Not”, $my, “fault”] )##ArrayList

注意:最后一个例子的取值方法为:$monkey.Say.get(0)

RHS也可以是一个简单的算术表达式:

#set ( $value = $foo + 1 )

#set ( $value = $bar -1 )

#set ( $value = $foo * $bar )

#set ( $value = $foo / $bar )

如果你的RHS是一个null,VTL的处理将比较特殊:它将指向一个已经存在的reference,这对初学者来讲可能是比较费解的。例如:

#set ( $resut = $query.criteria(“name”) )

分享到:
评论

相关推荐

    Velocity用户手册(中文版)

    这份中文版的Velocity用户手册将深入解析其语法和用法。 ** Velocity语法基础 ** 1. **变量引用**:在Velocity中,变量以$符号开头,例如 `$name`,表示要引用的变量。 2. **括号内引用**:如果变量名包含特殊...

    Velocity用户手册 中文版

    这个用户手册中文版详细介绍了Velocity的使用方法和语法特性。 ** Velocity 的基本概念 ** 1. **模板(Template)**:模板是Velocity的核心,它是HTML或XML等静态页面中嵌入了Velocity指令的文件,用于生成最终的...

    velocity手册_HTML版

    velocity手册_HTML版 内容简单 初学者的好东西

    Velocity_中文手册

    为了更好地使用Velocity,Velocity用户手册提供了详细的例子和说明。手册中包含了对VTL的详细介绍,比如变量的使用、控制结构的编写、指令的应用等,以帮助页面设计者和内容提供者快速熟悉和掌握Velocity的使用。...

    Velocity用户手册_中文.docVelocity用户手册_中文.doc

    【Velocity】 Velocity 是一个基于 Java 的模板引擎,它允许开发者使用模板语言(Template Language)来引用由 Java 代码定义的对象。其核心理念是将Java代码与HTML页面内容分离,促进MVC(Model-View-Controller)...

    Velocity用户手册.doc

    3. **Foreach** 循环遍历集合,如 `#foreach($item in $list)`,并在每次迭代中渲染模板部分。 4. **Include** 指令用于插入其他模板,增强模板复用性。 5. **Parse** 指令用于解析并执行嵌入的 VTL 代码块。 6. **...

    Velocity手册-中文版

    【Velocity 手册-中文版】是一份详细指导文档,主要面向页面设计者和内容提供者,介绍如何使用 Velocity 模板语言(VTL)来创建动态内容并将其嵌入到网页中。Velocity 是一个基于 Java 的模版引擎,它的核心功能是将...

    velocity 手册

    【Velocity手册】深入解析 Velocity是一个强大的基于Java的模板引擎,其主要目的是将内容呈现与业务逻辑相分离,实现Model-View-Controller(MVC)架构。它使用一种称为Velocity Template Language (VTL) 的简单...

    velocity中文手册

    velocity中文手册 Velocity 是一个基于java 的模板引擎(template engine)。它允许任何人仅仅简单的使 用模板语言(template language)来引用由java 代码定义的对象。

    velocity手册

    ### Velocity手册核心知识点详解 #### 1. 什么是Velocity? Velocity是一种基于Java的模板引擎,它的主要作用是将Web页面设计者与Java程序员的工作区分开来,使得两者能够平行工作而不互相干扰。通过这种方式,Web...

    Velocity中文手册

    Velocity是一个基于Java的模板引擎,它主要被用来分离Java代码和Web页面。通过预定义的Java方法,Web设计者可以在页面设计过程中嵌入这些Java代码。与传统的MVC模式相结合,Web设计者和程序员可以并行工作,提高工作...

    Velocity用户手册(中文)

    3. **高性能**: 由于Velocity在编译时将模板转换为Java源代码,运行时执行的是已编译的Java代码,因此其性能表现优秀。 4. **可扩展性**: Velocity支持自定义指令和宏,可以轻松地扩展功能以满足特定需求。 5. **...

    velocity 用户手册 参考文档 详细讲解

    Velocity 是一个基于 Java 的模板引擎,它主要用于将静态页面内容与动态数据相结合,实现模板语言与 Java 代码的分离。Velocity 的核心理念是让界面设计人员专注于页面布局和样式,而将业务逻辑处理交给 Java 开发...

    velocity用户手册velocity用户手册velocity用户手册

    ### Velocity用户手册精要 **一、Velocity简介与能力范畴** Velocity是一款强大的模板引擎,其功能远远超越了web站点开发的局限。它不仅能够用于创建动态网页,还具备生成SQL、PostScript、XML等各类文档的能力,...

    Velocity用户手册中文版

    3. Velocity 模板语言(VTL): - VTL 是 Velocity 提供的一种简单而强大的脚本语言,用于定义模板。 - 它允许页面设计者引用 Java 预定义方法,并能够嵌入动态内容。 - VTL 支持注释、引用、指令和获取代码段等...

    Velocity用户手册---中文版.doc

    【Velocity简介】 Velocity是一个基于Java的模板引擎,它的核心功能是将静态的HTML模板与动态的Java代码相分离,让网页设计人员专注于页面布局,而程序员则专注于业务逻辑的实现。Velocity允许通过模板语言...

    Velocity用户手册

    3. **高效性能**:Velocity在运行时不会重新解析模板,而是使用编译后的模板,提高了执行效率。 4. **安全性强**:由于Velocity不直接执行Java代码,而是通过Velocity模板语言(VTL),降低了代码注入的风险。 **...

Global site tag (gtag.js) - Google Analytics