1 / 11

Velocity 模板语言介绍

LOGO. Velocity 模板语言介绍. 演讲者:程小强. 1.Velocity 概述 ?. Velocity 是一个基于 java 的模板引擎( template engine:模板引擎的作用就是取得数据并加以处理,最后显示出数据 )。 它允许任何人仅仅简单的使用模板语言( template language) 来引用由 java 代码定义的对象。. 2 . Velocity工作流程和原理. 初始化Velocity. 创建Context对象 添加数据到Context 选择模板 合并模板和数据产生输出页面. 2 . Velocity工作流程和原理.

tad-higgins
Download Presentation

Velocity 模板语言介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LOGO Velocity 模板语言介绍 演讲者:程小强

  2. 1.Velocity概述? Velocity是一个基于java的模板引擎(template engine:模板引擎的作用就是取得数据并加以处理,最后显示出数据)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

  3. 2.Velocity工作流程和原理 • 初始化Velocity. • 创建Context对象 • 添加数据到Context • 选择模板 • 合并模板和数据产生输出页面

  4. 2.Velocity工作流程和原理 • 初始化Velocity. • 创建Context对象 • 添加数据到Context • 选择模板 • 合并模板和数据产生输出页面 public static void main(String[] args) throws Exception { Velocity.init(); VelocityContext context = new VelocityContext(); context.put("name", “Velocity"); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( System.out)); Template template = Velocity.getTemplate("src/velocity/hello.vm"); template.merge(context, writer); writer.flush(); writer.close(); }

  5. 3.VTL介绍 VTL提供一种简单、容易和干静的方法将动态内容合并到Web页面。VTL使用引用(references)将动态内容插入到Web页面中。变量是一种引用,可以指向Java代码中的定义内容,或者由Web页面中的VTL语句来获得值。 例如:#set( $a = "Velocity" ) VTL语句以#开头,并包含指令(set)。变量以$开头,用引号引起 VTL语法包括: 1,注释(单行注释以##开始和多行注释包括在#*和*#之间) 2,引用(References) 3,指令(Directives)

  6. 注释 单行注释以##开始和多行注释包括在#*和*#之间 引用(references) VTL有3种类型的引用:变量、属性和方法 指令(directives) 单击此处添加文字内容 单击此处添加文字内容 单击此处添加文字内容 1 2 3 VTL语法

  7. 变量引用 • 属性引用 • 方法引用 引用类型 1)变量 变量的格式: $VTL标识符 VTL标识符以字母开始, 由字母、数字、 横划线(-)或下划线(_)组成。 例如下面的例子: #set( $foo = "gibbous" ) $moon = $foo 输出结果是:$moon = gibbous 举例 (2)属性 属性的格式: $VTL标识符. VTL标识符 下面是属性引用的例子: $customer.Address $purchase.Total 拿第一例子来说,有两种意思: 返回Hashtable对象customer中 键值 为Address的值 $customer.getAddress()方法 引用的缩 写(JavaBean属性 的getter方法) 至于是哪种情况,Velocity会做 决定,返回合适的值。 (3)方法 方法的格式: $VTL标识符(参数列表) 下面是方法引用的例子: $customer.getAddress() $purchase.getTotal() $page.setTitle( "My " ) $person.setAttributes( ["S", "W", "E"] )。 引用(references)

  8. 详解以下VTL常用操作符 关系和逻辑操作符 Velocity 也具有逻辑AND, OR 和 NOT 操作符。 如 ## example for AND #if($foo && $bar) <strong> This AND that</strong> #end 例子中#if() 指令仅在$foo 和$bar 都为真的时候才为真。如果$foo 为假,则表达式也为假;并且 $bar 将不被求值。如果 $foo 为真,Velocity 模板引擎将继续检查$bar的值,如果 $bar 为真,则整个表达式为真。并且输出This AND that 。如果 $bar 为假,将没有输出因为整个表达式为假。 http://velocity.apache.org/engine/devel/vtl-reference-guide.html

  9. 详解以下VTL常用指令 指令 1.#set 2.#if / #elseif / #else 3.循环:foreach 4.#include 5.#parse 6.#stop 7.#macro 8. #break - Stops the current directive http://velocity.apache.org/engine/devel/vtl-reference-guide.html

  10. 以下只做了解 其他 1.转义字符'\'的使用 如果reference被定义,两个’\’意味着输出一个’\’,如果未被定义,刚按原样输出。 2.内置对象 $request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。 3.数组访问 对数组的访问在Velocity中存在问题,因为Velocity只能访问对象的方法,而数组又是一个特殊的Array,所以虽然数组可以进行循环列举,但却不能定位访问特定位置的元素,如 strs[2],数组对固定位置元素的访问调用了Array的反射方法get(Object array, int index),而Velocity没能提供这样的访问,所以数组要么改成List等其他类容器的方式来包装,要么就通过公用Util类的方式来提供,传入数组对象和要访问的位置参数,从而达到返回所需值的目的。 http://velocity.apache.org/engine/devel/vtl-reference-guide.html

  11. Thank You !

More Related