VELOCITY
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也 就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这 样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和 PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为 Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
一、 变量
$ [ ! ][ { ][ a-z, A-Z ][ a-z, A-Z, 0-9, -, _ ][ } ]
例如:
* 一般格式: $ued-yuanxin_20
* 静态引用: $!ued-yuanxin_20
* 正规格式: ${ued-yuanxin_20}
注:对于静态引用符——叹号(!)。如果一个变量没有赋值(如:value=”$yuanxin”),则会直接原样输出变量名,没有任何处理(输 出:value=”$yuanxin”)。使用静态引用符,将会在代码初始化时,如变量没有值,输出一个空字符串代替变量(输出value=”")。
二、属性
$ [ { ][ a-z, A-Z ][ a-z, A-Z, 0-9, -, _ ]* .[a-z, A-Z ][ a-z, A-Z, 0-9, -, _ ]* [ } ]
具有相对固定的格式,它以 $ 开头,随后是“变量名字.变量属性”。
例如:
* 一般格式: $customer.address
* 正规格式: ${ customer.address }
$customer.address,首先它可能在查找customer引用的一个hash表中的以“address”为key关联的一个数据对 象。也可能表示java对象customer中的getAddress()这个命令取得的结果(当然也可写成 $customer.getAddress())。当客户请求Web页面,将根据具体的customer类型输出。
三、方法
$ [ { ][ a-z, A-Z ][ a-z, A-Z, 0-9, -, _ ]* .[ a-z, A-Z ][ a-z, A..Z, 0-9, -, _ ]*( [ optional parameter list ] ) [ } ]
例如:
* 一般格式: $customer.getAddress()
* 正规格式: ${ customer.getAddress() }
* 传入参数: $customer.getAddress(”taobao ued”)
$customer.getAddress() 可以等同于属性引用情况: $customer.address,同时,也等同java对象coustomer的getAddress()方法调用。
四、指令
1、set指定——建立变量对值的引用
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )
#set 用来给一个引用赋值,值可以被赋给变量引用或属性引用, 但要将它们放入括号中。而右值可以为变量引用、字符串、属性引用、方法引用、数字、数组、映射(Map),甚至可以做为一个表达式出现(加,减,乘,除和取模等)。
例如:
* 变量引用: #set( $monkey = $bill )
* 字符串引用: #set( $monkey.friend = “monica” )
* 属性引用: #set( $monkey.blame = $whitehouse.Leak )
* 方法引用: #set( $monkey.plan = $spindoctor.weave($web))
* 数字引用: #set( $monkey.number = 123 )
* 数组引用: #set( $monkey.say = ["Not", $my, "fault"] )
* 映射引用: #set( $monkey.map = {”banana” : “good”, “roast beef” : “bad”})
在ArrayList类型引用的例子中,其原素定义在数组 [..]中, 因此,你可以使表 $monkey.say.get(0)访问第一个元素.
类似的,引用Map 的例子中, 原素定义在 { } 中,其键和值间以:隔成一对,使用 $monkey.map.get(”bannana”) 在上例中将返回 ‘good’, ( $monkey.map.banana也会有同样效果)。
注意:使用#set 指令默认情况下,变量如果用 “”引起会被解析,但当用单引号引起来时,就不会被解析。但淘宝的VM已经修改了此规则,双引号和单引号都解析,但依旧不推荐使用单引号。
2、#if/#elseif/#else——条件判断
# [ { ] if [ } ] ( [condition] ) [output] [ # [ { ] elseif [ } ] ( [condition] ) [output] ]* [ # [ { ] else [ } ] [output] ] # [ { ] end [ } ]
* condition – 如果是boolean型,根据true或false决定,否则非null时认为是true。
* output –可以包含VTL的输出内容。
* 关系和逻辑运算基本同JS。
* “== ” 操作符可以用来比较数字,字符串,或同一个类的不同对象或不同类型的对象. 当是不同类的对象时,会调用它们的toString()命令结果来做比较看是否相等。
* 也可以如下用法,但注意else处,用{}括起:#if( $foo == $bar)it’s true!#{else}it’s not!#end
3、#foreach—使用循环通过列表迭代对象
# [ { ] foreach [ } ] ( $ref in arg ) statement # [ { ] end [ } ]
* $ref:引用的要迭代的对象.
* arg:可能是一个列表引用、数组列表、或其它列表。
例如:
* 列表引用: #foreach ( $item in $items )
* 数组列表: #foreach ( $item in ["Not", $my, "fault"] )
* 根据设定的界限: #foreach ( $item in [1..3] )
五、注释
单行注释(##),例如:
## This is a comment.
多行注释(#^ xxxx ^#),例如:
#*
This is a multiline comment.
This is the second line
*#
六、转义
$ 和 # 是VM中的特殊字符,转义需使用反斜杠(),例如:$email
七、其他
1、 $ 和 # 是VM中的特殊字符,所以禁止在VM中使用Tbar中的 $D或者 $E等变量。
2、判断变量值时,需要对变量加引号,强制转型为String型(例如:#if (”$listType” == “grid”) )。
3、字符串使用引号时,约定优先使用双引号。
八、淘宝VM常用语法
1、引用control语法:$control.setTemplate(”list/product/catPathLink.vm”)
2、layout中引用screen 语法:$screen_placeholder 。
3、获得url问好后的参数,例如:获得”?list=xxx”,使用方法:$rundata.parameters.getString(”list”)
分享到:
相关推荐
- **Sprite**:是最常用的容器,可以包含图形、文本和其他DisplayObject。 - **Loader**:用于加载SWF、图像(.jpg, .gif, .png)等外部资源。 - **Stage**:是整个舞台,包含所有的显示对象。 - **...
VM:View Model负责业务处理,对数据进行加工,之后交给视图 Vue1 下载地址:http://v1-cn.vuejs.org/js/vue.js Vue2 下载地址:https://unpkg.com/vue@2.2.1/dist/vue.js 三、Vue常见指令介绍上 1、插值...
- 更新数据:`UPDATE mytable SET sex = 'vm' WHERE name = 'summer';` - 删除数据:`DELETE FROM mytable WHERE name = 'summer';` - 增加字段:`ALTER TABLE yourtable ADD name VARCHAR(20) NOT NULL;` - ...
常用内置对象 - `request`:请求对象 - `response`:响应对象 - `session`:会话对象 - `application`:应用程序上下文对象 - `runtime`:运行时对象 - `logger`:日志记录器对象 #### 十三、数组的访问 ##### 1....
#include("other_template.vm") ``` #### 四、高级特性 除了基础语法外,Velocity 还提供了一些高级特性,如宏定义、自定义函数等,这些功能可以让模板变得更加灵活和强大。 ##### 4.1 宏定义 宏是一种可以...
最常用的循环指令是`#foreach`。 **2.1 循环的基本形式** `#foreach`指令的基本形式如下: ```velocity #foreach($element in $list) This is $element. $velocityCount #end ``` 其中`$list`可以是`Vector`、...
它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写...
这些功能包括但不限于语法高亮、代码补全、错误检测、重构支持等。 #### 十六、PyCharm编辑器功能之自动生成格式 自动生成格式是一种节省时间的功能,它可以根据预设的规则自动整理代码格式,确保整个项目风格一致...
3. 编辑器:代码编写区域,支持语法高亮、代码提示等。 三、项目创建与导入 1. 创建新项目:通过"File" > "New" > "Project",选择合适的项目类型和构建系统(如Maven或Gradle)。 2. 导入现有项目:"File" > "Open...
实例的选项(options)定义了其行为,常用选项包括: 1. el: 用于挂载实例到页面上的一个已存在的DOM元素。例如,Vue实例可以使用el选项直接挂载到一个ID为app的div元素上。 2. data: 实例化Vue对象时定义的数据...
本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,能够帮助我们解决各种 JVM 性能问题,如 OutOfMemoryError、...
2. **AJAX**:异步JavaScript和XML,尽管现在不常用XML,但AJAX仍然是实现页面无刷新数据更新的关键技术。在虚拟机监控场景下,AJAX可以用来定期从服务器获取最新的监控数据,然后更新图表。 3. **数据可视化库**:...
1. **Bash Shell**: Bash是GNU项目的一部分,是Linux和Unix系统中最常用的Shell。它是命令行界面,允许用户输入命令来执行任务。学习Bash shell包括了解命令行语法、命令历史、环境变量、脚本编写等。 2. **Ubuntu ...
- **mounted**: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。 - **beforeUpdate**: 数据更新时调用,发生在虚拟 DOM 打补丁之前。 - **updated**: 组件 DOM 已经更新之后调用。 例如: ```...
- 是目前最常用的JVM实现。 - 包括解释器和即时编译器。 - 支持动态代码优化技术。 3. **HotSpot VM的运行时支持**: - **垃圾回收器**:管理内存资源。 - **线程调度器**:管理并发执行。 - **类加载器**:...
Java常用命令汇总 Java是一种广泛应用于企业级开发和移动应用开发的高级编程语言,作为Java开发者的基本技能之一,了解Java常用命令是非常重要的。本文将对Java常用命令进行汇总,帮助开发者快速了解和掌握Java命令...
可以通过修改 bin/idea64.exe.vmoptions 文件中的 -Xms 和 -Xmx 属性值来调整内存大小,这将根据电脑物理内存情况进行设置。 在首次启动 IntelliJ IDEA 之后,系统会自动提示选择主题UI、Plugins、是否导入本电脑已...
常用的插值操作有四种: 1. v-html:往标签内部插入 HTML 文本。 2. v-text:往标签内部插入普通文本(解析不了标签)。 3. v-pre:在界面上直接展示胡子语法。 4. v-cloak:隐藏数据渲染到页面之前,胡子语法在...
- **HotSpot VM**:Oracle公司的JVM实现,是当前最常用的JVM之一。HotSpot VM利用了各种优化技术来提高程序执行效率,例如内联缓存、方法内联等。 #### 三、HotSpot VM及其运行时支持 HotSpot VM是当前主流的JVM...
C语言是编写操作系统代码的常用语言,因为它提供了低级别的硬件访问能力,同时保持了高级语言的可读性和效率。学生需要熟悉C语言的基本语法、数据类型、函数调用以及指针操作。 3. **虚拟机环境**:虚拟机为学生...