velocity学习笔记

变量的定义

#set($name = "hello")
变量引用尽量规范
Java is Hello ${name}

变量赋值

#set($P{monkey.Friend="monica"}) //这是赋值一个string

注意:

1.如果右边值是null,则左边不会被赋值,会保留以前的值

2.velocity模板不会将reference解释为对象的实例变量

例如: $foo.Name 将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量

循环

#foreach ($element in $list)

This is $element

$velocityCount //这个表示的数量

#end

条件语句

#if(condition)

#else if(condition)

#else

#end

语句的嵌套

#foreach($element in $list)

## 内部循环

#foreach ($element in $list)

$element

#end

## 外部循环

$element

#end

注释

(1) 单行注释

## 表示单行注释

(2) 多行注释

#* 这是多行注释*#

(3) 文档格式注释

#** 这是文档注释

@version 1.1

@author minglangx

*#

关系和逻辑操作符

#if($foo && $bar)

This AND that

#end

Velocity中的宏

Velocity中的宏我们可以理解为函数

(1) 宏的定义

#marcro(宏的名称 $参数1  $参数2....)

语句体

#end

(2) 宏的调用

#宏的名称($参数1 $参数2...)

说明: 参数之间用空格隔开

#stop

停止执行模板引擎并返回,把它应用于debug调试

#include与#parse

都是引入本地文件,为了安全,被引入的本地文件只能在TEMPLATE_ROOT目录下。

区别:

(1) #include可以引入多个文件,可以用逗号分隔。

#include("one.gif","two.txt","three.htm")

在括号内可以是文件名,但是更多的是使用变量

#include($test)

(2) include被引入的文件的内容将不会通过模板引擎解析

而#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板意思就是直接将引入文件的内容复制到当前文件中

例如: 当前文件 dofoo.vm

Count down.

#set ($count=8)

## 这里引用了一个vm文件直接追加到当前代码中

#parse("parsefoo.vm")


ALL done with dofoo.vm!

那么在parsefoo.vm模板中,你输入一下内容

$count

#set ($count = $count -1 )

#if ($count > 0) 

#parse("parsefoo.vm")

#else


ALL done with parsefoo.vm!

#end

最后显示结果:

Count down.

8

7

6

5

4

3

2

1

0

All done with parsefoo.vm!

All done with dofoo.vm!

10. 转义字符 ''的使用

如果引用被定义, 两个'\‘只会输出一个'',如果未被定义,刚按原样输出. 例如:

#set($email = "foo" )

$email

\$email

\\$email

\\\$email

输出:

foo

\$email

\foo

\$email

如果$email 未定义

$email

\$email

\\$email

\\\$email

内置对象

Velocity内置了一些对象,在vm模板里可以直接调用,例如:$request、$response、$session

数组访问

如果需要访问特定的元素需要传入相应的下标

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 介绍 Jinja是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker...
    ZhouLang阅读 12,500评论 0 2
  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 10,157评论 0 17
  • FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1...
    年轻小伙程序员阅读 8,222评论 0 5
  • 本文基于 Velocity 1.7 版本撰写。 概述 什么是Velocity? Velocity是一个基于java...
    静默虚空阅读 12,285评论 1 5

友情链接更多精彩内容