velocity 模板引擎

原创 2016年08月29日 15:43:01

freemarker等的同类产品,可脱离web环境使用。

在web项目中与springMVC搭配,可参考<spring mvc中的视图框架>

它是一个apache的项目,地址为:http://velocity.apache.org/engine/1.7/user-guide.html

1.依赖

<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>

2.例子

下面是java文件:

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.junit.Test;

import com.yichudu.meweb.dto.GaoKaoScoreDto;

public class velocityTest {
	@Test
	public void velocityTestFun() {
		// 初始化模板引擎
		VelocityEngine ve = new VelocityEngine();
		// 配置引擎上下文对象
		VelocityContext ctx = new VelocityContext();
		ctx.put("gaoKaoScoreList", genData());
		// 加载模板文件
		Template template = ve.getTemplate("/WebContent/WEB-INF/template/test.vm");
		StringWriter sw = new StringWriter();
		// 渲染模板
		template.merge(ctx, sw);
		System.out.print(sw.toString());
	}

	public List<GaoKaoScoreDto> genData() {
		List<GaoKaoScoreDto> gaoKaoScoreList = new ArrayList<>();
		GaoKaoScoreDto dto = new GaoKaoScoreDto();
		dto.chinese = 124;
		dto.english = 100;
		dto.idCard = "123";
		dto.luoFenplusZhaoGuFen = 123;
		dto.math = 1;
		dto.name = "xiaoming";
		dto.no = "12";
		dto.ranking = 2;
		dto.total = 1234;
		dto.type = "arts";
		gaoKaoScoreList.add(dto);
		return gaoKaoScoreList;
	}
}
/*
<tbody>
<tr>
<td>12</td>
<td>xiaoming</td>
<td>123</td>
<td>arts</td>
<td>124</td>
<td>1</td>
<td>0</td>
<td>100</td>
<td>1234</td>
<td>123</td>
<td>2</td>
</tr>
</tbody>
*/
下面是vm模板文件:
<tbody>
	#foreach ($element in $gaoKaoScoreList)
		<tr>
			<td>$element.no</td>
			<td>$element.name</td>
			<td>$element.idCard</td>
			<td>$element.type</td>
			<td>$element.chinese</td>
			<td>$element.math</td>
			<td>$element.comprehensive</td>
			<td>$element.english</td>
			<td>$element.total</td>
			<td>$element.luoFenplusZhaoGuFen</td>
			<td>$element.ranking</td>
		</tr>
	#end
</tbody>

3.指令

3.1 foreach

#foreach ($student in $studentList)
<name>$student.name</name>
<grade>$student.grade</grade>
#end

3.2 注解

## This is a single line comment.
上面是行注解,下面是块注解.
#*
  Thus begins a multi-line comment. Online visitors won't
  see this text because the Velocity Templating Engine will
  ignore it.
*#

3.3 参数赋值

#set( $foo = "bar" )

3.4 访问对象的字段

$foo.getBar()
## is the same as
$foo.Bar

3.5 if-else

#if( $foo < 10 )
    **Go North**
#elseif( $foo == 10 )
    **Go East**
#elseif( $bar == 6 )
    **Go South**
#else
    **Go West**
#end

3.6 变量边界

#*
页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这 个变量的后面紧接着显示name字符,则上面的标签应该改成
*#
${someone}name

3.7 include

若干个网页有相同的页脚,除了用<iframe>标签,还可以用#include指令.区别在于<iframe>标签的内容是一个完整的html,而include进来的只是共用的文本片段.
<body>
#include('common/footer.html')
</body>

3.8 parse

与include类似,前者引入的是普通文本,后者引入的是含有指令的文本,并作解析.

3.9 控制不存在的变量

变量前面加个叹号, 若该变量不存在, 该位置留空.
如 $!name .

4.IDE插件

在 eclipse marketplace中搜索veloedit,安装即可。

图4-1 veloedit的高亮与提示效果


相关文章推荐

页面片段缓存----基于velocity

一般,页面上会分为很多部分,而不同的部分更新的频率是不一样的。如果对整个页面采用统一的缓存策略则不太合适, 而且很多系统的页面左上角都有一个该死的“Welcome XXX”。这种特定于用户的...
  • zshake
  • zshake
  • 2016年02月13日 21:35
  • 1089

velocity(vm)模板引擎学习介绍及语法

velocity与freemaker、jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,(注:castle团队在gith...

Velocity 模板引擎在复杂邮件业务中的简单举例

Velocity是apache组织下的一个基于java的模板引擎(template engine),而这种Apache velocity 模板引擎的简单使用可以更好的将样式设计和java开发分离开来。...

Struts与Velocity模板引擎集成

2010年1月23日 Struts2与Velocity模板引擎集成 Struts2与Velocity模板引擎集成 一 Struts 与 Velocity 模板步骤: 1 把Velocity JAR 放...

模板引擎 Velocity :动态生成页面

最近为实现某些业务要用到动态生成页面,便简单研究了下Velocity开源模版引擎,发现其非常强大。 开源地址:http://www.oschina.net/p/velocity 想必很多jav...

(一)模板引擎之velocity介绍

什么是velocity? Velocity是一个基于java的模板引擎(template engine)。可以使用简单的模板语言(templatelanguage)来引用由java代码定...

(二)模板引擎之Velocity脚本基本语法全

velocity velocity三种reference     变量:对java对象的一种字符串化表示,返回值调用了java的toString()方法的结果。     方法:调用的是对象的某个方...

利用 Velocity 模板引擎制作网站

似乎所有语言教学的开头都是采用 HelloWorld 来作为第一个程序的示例。这里也不例外。 任何 Velocity 的应用都包括两个方面: 第一是: 模板制作,在我们这个例子中就是 ...

如何使用 velocity 模板引擎开发网站(转)

基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内。这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:velocity 模板引擎
举报原因:
原因补充:

(最多只允许输入30个字)