velocity基本语法及指南

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.3 动作指令
• #if / #elseif / #else 条件判断
格式:#if (condition) statement #elseif ( condition ) statement #else statement #end 注:condition 如果是boolean 型,根据true 或false 决定, 否则非null 时认为是true. 其中比较是否相等皆用 “ == ”,包括数字、字符串, 以及同一个类的不同对象或不同类的对象

3. 环境配置
3.1 需要的.jar
commons-beanutils-1.7.0.jar 对bean操作的一些类 commons-collections-3.2.jar 扩展了java.util.Map的一些集合 commons-digester-1.8.jar 用于处理xml转换到对象的工具类 commons-lang-2.2.jar 扩展了ng的类 commons-logging-1.1.jar 日志输出类 velocity-1.7.jar 包含velocity运行时需要的类 velocity-tools-2.0.jar 视图控制和系统工具类
Velocity 模板介绍
1. Velocity
Velocity 是一个基于java 的模板引擎(template engine)。
2. VTL
提供一种简单、容易的方法将动态内容合并到Web页面。
2.1 VTL注释
• 单行注解:
例:## This is a comment. • 多行注解: 例:#* This is a multiline comment. This is the second line. *#
2.2 语法
• 变量定义:
$username 或 ${username} 附:$!username 为当 username值为null时不直接输出$username, 而是显示空白
• 访问属性:
$user.Address :调用user对象的getAddress( )方法 或 ${user.Address}
2.3 动作指令
• #foreach 使用循环通过列表迭代对象
格式:#foreach ( $ref in arg ) statement #end $ref – 引用的要迭代的对象. arg – 可能是:一个列表引用(i.e. object array, collection, or map), an array list, 或 其它列表. statement – 当velocity 发现下一个有效对像在列表中,输出可以是一个合法的 VTL. 例: 引用: #foreach ( $item in $items ) 数组列表: #foreach ( $item in ["Not", $my, "fault"] ) 根据设定的界限: #foreach ( $item in [1..3] )
3.2 web.xml文件配置
<web-app> <servlet> <servlet-name>velocity</servlet-name> <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> </web-app>
4. servlet应用
• 继承velocityviewservlet类 • 重写handleRequest( )方法即可
• 命令调用:
$user.getAddress( ) 或 ${user.getAddress( )} 附:属性调用可以理解为命令调用的简写方式,一般会调用对象的get/set 命令.
2.3 动作指令
• #set 建立变量对值的引用

例: 变量引用: #set( $monkey = $bill ) 引用原始字符串: #set( $monkey.Friend = 'monica' ) 属性引用: #set( $monkey.Blame = $whitehouse.Leak ) 命令引用: #set( $monkey.Plan = $spindoctor.weave($web) ) 直接引用数字: #set( $monkey.Number = 123 ) 列表赋值引用: #set( $monkey.Numbers = [1..3] ) 对象数组: #set( $monkey.Say = ["Not", $my, "fault"] ) 等号右边的值也可以为表达式(+、—、*、/ 、%),如: Addition: #set( $value = $foo + 1 )
2.3 动作指令
• #stop 中断模板解析
格式:调试用.
2.3 动作指令
• #macro 让用户可以定义宏操作 即 定义一段可重用的VTL template
格式:#macro ( vmname $arg1 [ $arg2 $arg3 ... $argn ] ) code... #end vmname – 宏名字VM (#vmname ) $arg1 $arg2 [ ... ] – 要传给宏的参数VM.. code...–宏代码,有效的VTL. 应用:#vmname( $arg1 [ $arg2 $arg3 ... $argn ] )
2.3 动作指令
• #parse 在模板引用处使用Velocity 解析另一个模板输出
格式:#parse ( arg ) arg :目录TEMPLATE_ROOT 下面的有效文件名 两种方式: 直接写文件名: #parse( "lecorbusier.vm" ) 使用变量引用的文件名: #parse( $foo ) 注:不能接受多个参数


2.3 动作指令
• #include 在模板中引入本地文件,不用Velocity 解析这个文件
格式:#include ( arg1 [ , arg2 ... argn]) arg :目录TEMPLATE_ROOT 下面的有效文件名 两种方式: 1、直接写文件名,如: #include ( “file1.txt”,”file2.txt”) 2、使用变量引入文件名,如: #include( $foo,$bar )
相关文档
最新文档